我有一个字符串。我需要从这个原始字符串替换给定数组字符串的所有实例 - 我该怎么做?
目前我正在使用......
var inputString = "this is my original string.";
var replacement = "";
var pattern = string.Join("|", arrayOfStringsToRemove);
Regex.Replace(inputString, pattern, replacement);
这很好用,但不幸的是,当有人试图删除正则表达式中具有特殊含义的字符时,它会崩溃。
我该怎么做?还有更好的方法吗?
答案 0 :(得分:3)
使用Regex.Escape构建模式:
StringBuilder pattern = new StringBuilder();
foreach (string s in arrayOfStringsToRemove)
{
pattern.Append("(");
pattern.Append(Regex.Escape(s));
pattern.Append(")|");
}
Regex.Replace(inputString, pattern.ToString(0, pattern.Length - 1), // remove trailing |
replacement);
答案 1 :(得分:1)
答案 2 :(得分:0)
您需要使用反斜杠转义特殊字符
\
有时您可能需要使用两个反斜杠
\\
答案 3 :(得分:0)
当然,您需要以空间意义转义字符。
var str_to_replace = "removing \[this\]\(link\)";