我想用另一个数字替换方括号中的字符串。我正在使用正则表达式替换方法。
输入样例:
所需的输出(将“[test]”替换为1.0):
现在,正则表达式不会替换特殊字符。下面是我尝试过的代码:
string input= "This is [test] version of application.";
string stringtoFind = string.Format(@"\b{0}\b", "[test]");
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
输入变量和stringtoFind变量中可能有任何特殊字符。
最佳答案
您必须在这里说明两件事:
\
符号对特殊字符进行转义,最好使用Regex.Escape
方法完成\b
,因为此构造的含义取决于即时上下文。 您可以做的是将
Regex.Escape
与明确的单词边界(?<!\w)
和(?!\w)
结合使用:string input= "This is [test] version of application.";
string key = "[test]";
string stringtoFind = $@"(?<!\w){Regex.Escape(key)}(?!\w)";
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
请注意,如果您要在用空格括起来的情况下替换键字符串,请使用
string stringtoFind = $@"(?<!\S){Regex.Escape(key)}(?!\S)";
^^^^^^ ^^^^^