碰到了一个问题,要过滤字符串中的|#|$|^|*|(|)|+|{|?|[|.这种字符。可是这些字符时正则表达式中的特殊字符,怎么办呢?有两种办法。
主要的思路是把 类似 “*” “[”的Relpace 为“\*”,"\["等
1,直接替换。
splitKey = splitKey.Replace("|", "\\|").Replace("#", "\\#").Replace("$", "\\$").Replace("^", "\\^").Replace("*", "\\*").Replace("(", "\\(").Replace(")", "\\)").Replace("+", "\\+");
splitKey = splitKey.Replace("{", "\\{").Replace("}", "\\}").Replace("?", "\\?").Replace("[", "\\[").Replace("]", "\\]").Replace(".", "\\.");
2,使用Regex.Escape()方法。参考(http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape.aspx)
//char[] charKey = { '|', '#', '$', '^', '*', '(',')', '+', '{', '}', '?', '[', ']', '.', '\\' };
splitKey = Regex.Escape(splitKey);
测试:
replaceStr = Regex.Replace(replaceStr , splitKey, String.Empty, RegexOptions.CultureInvariant);
成功。