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-我不想对他在做什么猜得太多,但这是一个很好的观点。编辑。旧版本会将“
变成两个空格,而不是一个。