在調用RegEx.Replace到大量字符串時,我有點擔心性能問題,因爲如果沒有匹配,我不知道它會發生什麼。如果什麼都不需要替換,C#/ .NET 2.0 RegEx.Replace是幹什麼的?
public static void ReplaceOldWithNew(ref string input)
{
string pattern = //something here
input = Regex.Replace(input, pattern, FormatReplacement);
}
private string FormatReplacement(Match m)
{
return String.Concat("x", formatCount++);
}
我應該有它這樣的
public static void ReplaceOldWithNew(ref string input)
{
string pattern = //something here
if (RegEx.IsMatch(input, pattern))
input = Regex.Replace(input, pattern, FormatReplacement);
}
的問題,這是它搜索輸入字符串兩次,如果有匹配(ES)。是否有任何解決方案只會搜索一次匹配並僅在需要時才創建新的字符串實例。也許使用RegEx.Matches或其他。
感謝& BR - 馬蒂
好的,再次感謝ahmad!不幸的是,我現在沒有時間進行這種研究。這足以讓我知道它早期返回並且不會創建例如StringBuilder並在那裏構造原始字符串。 – 2010-11-05 08:04:11