【问题标题】:Remove characters using Regex使用正则表达式删除字符
【发布时间】:2008-12-11 10:28:28
【问题描述】:

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

目前我正在使用...

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

Regex.Replace(inputString, pattern, replacement);

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

我该怎么做?有没有更好的办法?

【问题讨论】:

    标签: c# regex string


    【解决方案1】:

    使用 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);
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

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

        \
        

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

        \\
        

        【讨论】:

          【解决方案4】:

          你当然需要转义具有空间意义的字符。

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

          【讨论】:

            猜你喜欢
            • 2017-08-01
            • 1970-01-01
            • 2011-06-02
            • 2011-05-13
            • 1970-01-01
            • 2019-02-16
            • 2018-01-26
            • 2015-10-12
            • 1970-01-01
            相关资源
            最近更新 更多