替换包含特殊字符的字符串的精确部分
本文关键字:确部 字符串 特殊字符 替换 包含 | 更新日期: 2023-09-27 17:54:42
我试图用以下代码替换字符串的一部分:
public static string SafeReplace(this string input, string find, string replace, bool matchWholeWord)
{
string textToFind = matchWholeWord ? string.Format(@"'b{0}'b", find) : find;
return Regex.Replace(input, textToFind, replace);
}
但是当我在字符串中有特殊字符时,这不起作用。我试过转义字符,但没有成功…
下面是一个例子,我有以下字符串:
Peter[='111222'] + APeter[='111222']
我想用@
代替Peter[='111222']
,所以结果应该是:@ + APeter[='111222']
。对于给定的代码,字符串保持原样,没有任何变化。
请注意,我可能有许多不同的情况与其他特殊字符,如Steven.intr[A:B;>1], Sssdf.len, asd.ind
等,所以在我的情况下,我需要找到与不同格式的精确匹配。
提前感谢!
不匹配字边界,而是匹配空格和/或字符串的开始/结束。
另外,您需要转义您的字符串,并从replace中删除单词边界(在我的情况下,空白和/或行开始/结束):您可以使用forward/backward来做到这一点。
所以说:
public static string SafeReplace(this string input, string find, string replace, bool matchWholeWord)
{
string textToFind = matchWholeWord ? string.Format(@"(?<=^|'s){0}(?=$|'s)", Regex.Escape(find)) : Regex.Escape(find);
return Regex.Replace(input, textToFind, replace);
}
我做了一个演示小提琴