使用带有可变文本的正则表达式替换文本?

Pri*_*lia 3 c# regex

让我说我有一些文本有很多单词"查找"的实例,我想用"Replace1","Replace2","Replace3"等文本替换它.数字是"查找"的出现次数文本.如何在C#中以最有效的方式做到这一点,我已经知道了循环方式.

Mar*_*ell 5

A MatchEvaluator可以做到这一点:

string input = "FindbcFinddefFind", pattern = "Find";
int i = 1;
string replaced = Regex.Replace(input, pattern, match => "REPLACE" + i++);
Run Code Online (Sandbox Code Playgroud)

请注意,match变量也可以访问Match等等.使用C#2.0,您需要使用匿名方法而不是lambda(但效果相同) - 以显示以下内容Match:

string input = "FindbcFinddefFind", pattern = "Find";
int i = 1;
string replaced = Regex.Replace(input, pattern, delegate(Match match)
{
    string s = match.Value.ToUpper() + i;
    i++;
    return s;
});
Run Code Online (Sandbox Code Playgroud)