在我的C#程序中,我使用正则表达式:
我目前的代码大致如下:
string toSearchInside; // The actual string I'm going to be replacing within
List<string> searchStrings; // The list of words to look for via regex
string pattern = @"([:@?]{0})";
string replacement;
foreach (string toMatch in searchStrings)
{
var regex = new Regex(
string.Format(pattern, toMatch),
RegexOptions.IgnoreCase
);
var matches = regex.Matches(toSearchInside);
if (matches.Count == 0)
continue;
replacement = CreateReplacement(toMatch);
toSearchInside = regex.Replace(toSearchInside, replacement);
我可以使用它,但它似乎有点低效,因为它使用了两次正则表达式引擎 - 一次找到匹配(regex.Matches()
),一次用于替换regex.Replace()
)。我想知道是否有办法简单地说替换你已经找到的匹配?
答案 0 :(得分:0)
你可以从第一场比赛中获得所有比赛 - 并且对于你有索引的每场比赛,你可以迭代比赛并将其替换为字符串本身 - 因为它比正则表达式替换更有效。
虽然我会通过小单元测试来衡量性能(并且让NCrunch在后台运行会让它更快)