Skip to main content
 首页 » 编程设计

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

2024年02月24日33unruledboy

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

目前我正在使用...

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