我正在尝试编写一种使用正则表达式用替换字符替换输入数组中所有出现的字符的方法。如果数组包含任何可能更改正则表达式模式含义的字符,例如']'或'^',则我编写的版本不起作用。
public static string ReplaceAll(string str, char[] charsToReplace, char replacementCharacter)
{
if(str.IsNullOrEmpty())
{
return string.Empty;
}
var pattern = $"[{new string(charsToReplace)}]";
return Regex.Replace(str, pattern, replacementCharacter.ToString());
}
所以ReplaceAll("/]a", {'/', ']' }, 'a')
应该返回“ aaa”。
您可以将字符数组转换为字符串,然后将其放在字符类中:
string pattern = "[" + Regex.Escape(new string(charsToReplace)) + "]";
return Regex.Replace(str, pattern, replacementCharacter.ToString());
[要清楚此解决方案的作用,如果我们有一个包含字母a
,b
和c
的字符数组,则用于替换的正则表达式模式将为[abc]
。