指定したパターンに対して複数の一致がある場合とない場合がある文字列があります。複数の正規表現をそれぞれ異なる置換文字に置き換えます。
それぞれを交換する必要があります。
私はこのコードを持っている:
var pattern = @"\$\$\@[a-zA-Z0-9_]*\b";
var stringVariableMatches = Regex.Matches(strValue, pattern);
var sb = new StringBuilder(strValue);
foreach (Match stringVarMatch in stringVariableMatches)
{
var stringReplacment = variablesDictionary[stringVarMatch.Value];
sb.Remove(stringVarMatch.Index, stringVarMatch.Length)
.Insert(stringVarMatch.Index, stringReplacment);
}
return sb.ToString();
問題は、私はいくつかの試合を持っているときに最初に交換され、文字列があるときに、他の開始インデックスがそのようにいくつかのケースでは、交換後に変更されていることです
この試合は重いものの、誰かが別の解決策を指摘して別のストリングで複数のマッチを置き換えることができるかどうかを知りたかったのです。
* Regex.Replace:各試合で置き換えてください。ただし、**サウンド**重い*データのサイズは? –
私は考え方を繰り返すためにこのように約100,000の文字列を持っています。それぞれが1〜3個のマッチを持ち、それぞれを別の文字列で置き換えることができます。 – Mortalus
@ LucasTrzesniewski:私はモルタルスは、 'foreach'の中の' Regex.Replace'を使うことはパフォーマンスの殺人者だと思っています。ポイントは 'Regex.Matches'の代わりに' Regex.Replace'を*の代わりに使うことができることです。 –