如何使用regex来删除特殊字符,而不是替换字符串

本文关键字:替换 字符串 特殊字符 何使用 regex 删除 | 更新日期: 2023-09-27 18:17:23

我的当前方法:

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

我怎么能做到这一点使用正则表达式更好的性能?

编辑:对不起,我想用空格" "替换所有特殊字符。

如何使用regex来删除特殊字符,而不是替换字符串

你可以这样写:

string q = Regex.Replace(query, @"[:#/'']", ".");
q = Regex.Replace(q, @""|['"",&?%'.*-]", " ");
<标题>编辑:

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

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

我真的不知道你在这里想做什么。我觉得你真正在寻找的是这样的东西:

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

&quot;的存在让我陷入了一个循环,这就是为什么我不确定你在做什么。如果您想摆脱HTML实体,您可以先运行queryHttpUtility.HtmlDecode(string),然后应用正则表达式。

试试这个。

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