正则表达式用匹配索引替换字符

sch*_*mij 6 c# regex replace

我需要取这个字符串:

book_id = ? and author_id = ? and publisher_id = ?
Run Code Online (Sandbox Code Playgroud)

并把它变成这个字符串:

book_id = @p1 and author_id = @p2 and publisher_id = @p3
Run Code Online (Sandbox Code Playgroud)

使用此代码:

Regex.Replace(input, @"(\?)", "@p **(index of group)**");
Run Code Online (Sandbox Code Playgroud)

给我组索引的替换模式是什么?

Ahm*_*eed 6

你可以使用的Regex.Replace方法,需要一个MatchEvaluator,用一个计数器变量一起:

string input = "book_id = ? and author_id = ? and publisher_id = ?";
string pattern = @"\?";
int count = 1;
string result = Regex.Replace(input, pattern, m => "@p" + count++);
Run Code Online (Sandbox Code Playgroud)

m =>部分是MatchEvaluator。在这种情况下,无需使用Match(即m); 我们只想返回连接的结果并增加计数器。