c# - 使用正则表达式删除字符

标签 c# regex string

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

目前我正在使用...

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

Regex.Replace(inputString, pattern, replacement);

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

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

最佳答案

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

关于c# - 使用正则表达式删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358912/

相关文章:

c# - 使 SQL Server 中的正则表达式搜索更高效

c# - MVC 使用 CSHTML href

c# - 如何在 NET Core 上的 AWS SDK 上设置凭据?

java - 如何在 Java 中使用正则表达式查找带点的单词?

c++ - 如何使用正则表达式提取字符串的不匹配部分

php - 从字符串中删除多余的空格

c# - Entity Framework 为数据库中默认定义的 NOT NULL 列生成值

c# - 为什么我的 ASP.NET Core 2 方法不能返回 TwiML?

c# - 创建空数组并添加值导致 "Array index is out of range"

string - R - 获取给定时间段内最常见的字符串值(模式)