如何使用正则表达式而不是替换字符串删除特殊字符

时间:2011-12-11 01:36:18

标签: c# regex

我目前的方法:

var q = new StringBuilder(query);
        return q.Replace("'", " ")
            .Replace("\"", " ")
            .Replace(":", "")
            .Replace("#", " ")
            .Replace("/", " ")
            .Replace("\\", " ")
            .Replace(",", " ")
            .Replace("&", " ")
            .Replace("?", " ")
            .Replace("%", " ")
            .Replace(".", " ")
            .Replace("quot;", " ")
            .Replace("-", " ")
            .Replace("*", " ")
            .ToString().Trim();

如何使用正则表达式来提高性能呢?

编辑:抱歉,我想用空格“”替换所有特殊字符。

2 个答案:

答案 0 :(得分:5)

你可以用这个:

string q = Regex.Replace(query, @"[:#/\\]", ".");
q = Regex.Replace(q, @""|['"",&?%\.*-]", " ");

编辑:

仔细检查您正在做的事情后,您的代码会将多个字符转换为.然后将所有.转换为空格。所以你可以这样做:

string q = Regex.Replace(query, @""|['"",&?%\.*:#/\\-]", " ").Trim();
但是,我不确定你在这里要做什么。我觉得你真正寻找的东西是这样的:

string q = Regex.Replace(query, @"[^\w\s]", "");

"出现在那里会让我陷入困境,这就是为什么我不确定你在做什么。如果您想摆脱HTML实体,可以先运行queryHttpUtility.HtmlDecode(string),然后应用正则表达式。

答案 1 :(得分:1)

试试这个。

string pattern = @"[^a-zA-Z0-9]";            
string test = Regex.Replace("abc*&34567*opdldld(aododod';", pattern, " ");