如何在字符串中替换所有特殊字符?

6

为了去掉我的字符串中所有的空格,我使用了一个方法,它包括以下步骤:

message = message.replaceAll("\\s", "");

我在想是否有一个命令可以删除特殊字符,比如逗号或句号,并使其成为一个字符串。我需要一个个删除它们吗?还是我缺少了一段代码?

可能不是完美的重复示例,但这个问题已经被问了几十次。 - dimo414
3个回答

19

你可以走另一条路。使用否定字符类,替换掉所有非单词字符:

message = message.replaceAll("[^\\w]", "");
message = message.replaceAll("\\W", "");

它们都可以替换除了 [a-zA-Z0-9_] 之外的字符。如果您想要替换下划线,请使用:

[\\W_]

13

与一些人声称的相反,\w并不等同于[a-zA-Z0-9_]\w还包括所有语言(中文、阿拉伯语等)中属于字母或数字(和下划线)的所有字符。

考虑到您可能认为非拉丁字母/数字是“特殊”的,这将删除所有“非正常”的字符:

message = message.replaceAll("[^a-zA-Z0-9]", "");

1

\w是指[A-Za-z0-9_],它会去掉所有空格和其他字符(但不包括_)。更安全的做法是白名单允许的内容,而不是逐个删除字符。


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