仅保留数字和字母并移除空格

6
我尝试仅保留字母和数字。
String str = "it's too hard & jean say";
String strNew = str.replaceAll("[^A-Za-z0-9\\s]", "");

我试过使用这段代码,但是空格没有被删除。
所以我寻找一种方法来去掉它。

3
也许我没有理解问题的意思......但是要去除空格,您可以使用str = str.replaceAll(" ", ""); - Bhanu Kaushik
3个回答

13

它没有删除空格,因为您指定了用空字符串替换除字母(A-Za-z)、数字(0-9)和空格(\\s)以外的所有内容。

只需删除 \\s,它就应该也会用空字符串替换空格。

String strNew = str.replaceAll("[^A-Za-z0-9]", "");

请注意,\s 表示空格(如制表符和行尾)的意思。 - Stefan
正则表达式 [^A-Za-z0-9] 只会保留英文字母和西方阿拉伯数字,它将删除任何其他字母和数字。因此,对于所有“仅保留数字、字母”的解释,此正则表达式可能无法正常工作。 - Abdull

3
最简单的正则表达式是\W。试试看。
 String strNew = str.replaceAll("\\W", "");

1
请注意,\W 表示非单词字符。下划线(_)被定义为单词字符。因此,在您的建议中,结果中保留了下划线。 - Stefan

2

如果您只是想去掉空格,那么使用regex显然是过度的。为什么不直接使用以下代码:

String strNew = str.replaceAll(" ", "");


他还想删除其他字符,不仅仅是空格(请注意在他的示例中如何删除&和')。 - jbabey
2
@jbabey 我只是按照问题的线索来回答的。他只要求去除空格,因此我的回答是这样的。如果他还想去掉&',那么显然regex是解决方案,但如果只需要去除空格,那么使用regex就有些过头了。 - Prateek
@jbabey 我忽略了特殊字符,我的错 :) 另外,“只保留数字、字母和去除空格”。 - Prateek
1
如果你想避免使用 regex,那么建议使用 String.replace() 而不是 String.replaceAll()。你的方法仍然使用了正则表达式。 - dic19
内部是可以的,但这是实现(即去除空格)OP在他的问题中所要求的方式非常简单。 - Prateek
显示剩余3条评论

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