Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用正则表达式而不是替换字符串删除特殊字符_C#_Regex - Fatal编程技术网

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

C# 如何使用正则表达式而不是替换字符串删除特殊字符,c#,regex,C#,Regex,我目前的方法是: var q = new StringBuilder(query); return q.Replace("'", " ") .Replace("\"", " ") .Replace(":", "") .Replace("#", " ") .Replace("/", " ") .Replace("\\", " ") .Rep

我目前的方法是:

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, @""|['"",&?%\.*:#/\\-]", " ").Trim();
不过,我不太确定你想在这里做什么。我觉得你真正想要的是:

string q = Regex.Replace(query, @"[^\w\s]", "");
的出现让我陷入了一个循环,这就是为什么我不确定你在做什么。如果你想摆脱HTML实体,你可以先通过
HttpUtility.HtmlDecode(string)
运行
查询
,然后应用正则表达式。

你可以使用以下方法:

string q = Regex.Replace(query, @"[:#/\\]", ".");
q = Regex.Replace(q, @""|['"",&?%\.*-]", " ");
编辑: 仔细检查您正在执行的操作后,您的代码将几个字符翻译成
,然后将所有
翻译成空格。因此,您可以执行以下操作:

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

string q = Regex.Replace(query, @"[^\w\s]", "");
出现在那里的
让我感到很困惑,这就是为什么我不确定你在做什么。如果您想摆脱HTML实体,可以先通过
HttpUtility.HtmlDecode(string)
运行
query
,然后应用正则表达式。

试试这个

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

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

+1,但您只是翻译了操作码<代码>“quot;”
应该是
,或者
&\w+;
@RubensFarias-我不想对他在做什么猜得太多,但这是一个很好的观点。编辑。旧版本会把
变成两个空格,而不是一个。+1,但你只是翻译了操作码<代码>“quot;”
应该是
,或者
&\w+;
@RubensFarias-我不想对他在做什么猜得太多,但这是一个很好的观点。编辑。旧版本会将
变成两个空格,而不是一个。