使用Regex删除字符

时间:2008-12-11 10:28:29

标签: c# regex string

我有一个字符串。我需要从这个原始字符串替换给定数组字符串的所有实例 - 我该怎么做?

目前我正在使用......

var inputString = "this is my original string.";
var replacement = "";
var pattern = string.Join("|", arrayOfStringsToRemove);

Regex.Replace(inputString, pattern, replacement);

这很好用,但不幸的是,当有人试图删除正则表达式中具有特殊含义的字符时,它会崩溃。

我该怎么做?还有更好的方法吗?

4 个答案:

答案 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)

查看Regex.Escape

答案 2 :(得分:0)

您需要使用反斜杠转义特殊字符

\

有时您可能需要使用两个反斜杠

\\

答案 3 :(得分:0)

当然,您需要以空间意义转义字符。

var str_to_replace = "removing \[this\]\(link\)";