从字符串中删除特殊字符,但保留空格。

3
我正在寻找一个正则表达式来从字符串中删除所有特殊字符,除了空格。并且可能将所有多个空格替换为单个空格。
例如,"[one@ !two three-four]" 应该变为 "one two three-four"。
我尝试使用 "str = Regex.Replace(strTemp, "^[-_,A-Za-z0-9]$", "").Trim()",但它不起作用。我也尝试了其他几种方法,但它们要么去掉了空格,要么没有替换所有特殊字符。

“one#two”这个字符串将被替换成“one two”还是“onetwo”? - Jongware
3个回答

10

谢谢!它不会处理额外的空格,但除此之外运行良好。 - Coding Duchess
@ElenaDBA 请尝试现在。已处理多个空格。 - vks
太好了!谢谢! - Coding Duchess

0

使用正则表达式[^\w\s]来删除除单词和空格以外的所有特殊字符,然后进行替换:

Regex.Replace("[one@ !two three-four]", "[^\w\s]", "").Replace("  ", " ").Trim

0

方法:

不要尝试使用 replace,而是使用 replaceAll,例如:

String InputString= "[one@ !two    three-four]";

String testOutput = InputString.replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "").replaceAll("( )+", " ");

Log.d("THE OUTPUT", testOutput);

这将输出one two three-four

解释:

.replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "") 这将替换第一个和最后一个方括号[]之间存在的所有特殊字符

.replaceAll("( )+", " ") 这将用一个空格替换多个空格

替换 - 符号:

只需将该符号添加到正则表达式中,如下所示:.replaceAll("[\\[\\-!,*)@#%(&$_?.^\\]]", "")

希望这可以帮助您 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接