我知道我可以使用 RegEx 将所有出现的“a”、“b”或“c”替换为字符串中的黑斜线字符,如下所示:
string result = Regex.Replace(input, "[abc]", "\\");
但是如何用反斜杠替换每个匹配项,然后是匹配的字符?
您可以使用MatchEvaluator委托和Replace ...
Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))
无需使用 any MatchEvaluator
,Regex.Replace
提供专用方法来访问替换模式中的整个匹配值:$&
. 请参阅替换整个匹配:
替换包括替换字符串中的
$&
整个匹配。通常,它用于在匹配字符串的开头或结尾添加子字符串。例如, ($&
) 替换模式在每个匹配项的开头和结尾添加括号。如果没有匹配,则$&
替换无效。
采用
var result = Regex.Replace(input, @"[abc]", @"\$&");
var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd