1
這基本上是我的previous question的後續行動。我一直在使用這種代碼替換包含在一個字符串數組:優化正則表達式在for循環中替換?
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循環之前檢查它。這可能會變慢,但...
我想不出一個更好的方式來做到這一點,所以我想我會問。謝謝你們的幫助! :)
非常感謝這個!雖然對於非正則表達式代碼有點麻煩。 「Hello.replacedthesewordswillgetrerecedreplaced」應該被替換成'你好。[4,1] [0,1] [1,1] [2,1] [3,1] [4,2]'但它變成了'你好,[4,1] [0,1] [1,1] [2,1] [3,1] [4,2] [4,3]'。第二部分應該是被替換的匹配附近字符串的數量。這是我在問我以前的問題時遇到的麻煩,但肯德爾弗雷和肖恩解決了這個問題。任何想法,我會如何得到這個工作?再次感謝豐富。 –