C# 替换包含特殊字符的字符串的确切部分
C# Replace exact part of string containing special characters
我正在尝试用以下代码替换部分字符串:
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
等其他特殊字符,我可能会遇到许多不同的情况。因此在我的情况下,我需要找到与不同格式完全匹配的内容。
提前致谢!
不匹配单词边界,而是匹配字符串的空格 and/or beggining/end。这将适用于非字母数字。
另外,你需要转义你的字符串,并从替换中删除单词边界(在我的例子中,空格 and/or begin/end 行):你可以使用 lookahead/lookbehind.
这就是说:
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);
}
我正在尝试用以下代码替换部分字符串:
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
等其他特殊字符,我可能会遇到许多不同的情况。因此在我的情况下,我需要找到与不同格式完全匹配的内容。
提前致谢!
不匹配单词边界,而是匹配字符串的空格 and/or beggining/end。这将适用于非字母数字。
另外,你需要转义你的字符串,并从替换中删除单词边界(在我的例子中,空格 and/or begin/end 行):你可以使用 lookahead/lookbehind.
这就是说:
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);
}