これは基本的に私の前の質問のフォローアップです。このコードを使用して、配列に含まれる文字列を置き換えています。
string[] replacements = {"these",
"words",
"will",
"get",
"replaced"};
string newString = "Hello.replacedthesewordswillgetreplacedreplaced";
for (int j = 0; j < replacements.Length; j++)
{
newString = Regex.Replace(newBase,
@"((?<firstMatch>(" + replacements[j] + @"))(\k<firstMatch>)*)",
m => "[" + j + "," + (m.Groups[3].Captures.Count + 1) + "]");
}
このコードnewString
を実行すると、次のようになります。
こんにちは。[4,1][0,1][1,1][2,1][3,1][4,2]
これは、上記のような小さな交換には問題なく機能します。基本的には文字列を即座に置き換えますが、大量の置換の場合は遅くなる傾向があります。
より速く交換できるように最適化する方法を誰かが見ることができますか?
forループがそれを遅くしていると思います。配列には、置換する必要のない文字列が常に含まれているため (メインのnewString
文字列に含まれていないため)、for ループの前にそれを確認する方法があるかどうか疑問に思います。それは遅くなるかもしれませんが...
他に良い方法が思い浮かばなかったので質問させていただきました。助けてくれてありがとう!:)