如何在Java中替换所有特殊字符,除了下划线和数字?

6
我希望您能在Java中将字符串对象BusDetails中的所有特殊字符替换为一个空格"",除了_(下划线)和数字。
BusDetails=BusDetails.replaceAll("—", "").replaceAll("\\s+","_").replaceAll("ROUTE", "BUS").replaceAll("-", "_");

3
BusDetails = BusDetails.replaceAll("[^a-zA-Z0-9]", ""); 这个怎么样? - Subhrajyoti Majumder
2
尝试使用.replaceAll("[\\W]", "")[\\W]匹配任何非字母数字和下划线的字符。 - Baby
3个回答

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

使用正则表达式模式"[^a-zA-Z0-9_-]",我们可以将字符串中除字母、数字和下划线以外的所有特殊字符(符号)替换掉。

仅提供代码的答案很少有帮助。请解释您的代码片段如何解决问题,以便我们所有人都能学习。 - Ole V.V.
1
使用正则表达式模式"[^a-zA-Z0-9_-]",我们可以从字符串中替换所有特殊字符(符号),除了字母、数字和下划线。假设 BusDetails=BusDetails.replaceAll("Amol—", "").replaceAll("[^a-zA-Z0-9-]", ""); 它将返回字符串"Amol_151"。 - Amol Birajdar
谢谢,Amol Birajdar。我已经将解释放在了答案中,这样更合适。下次请您自己这样做。如果要改进您已发布的答案,请使用答案下方的编辑链接 - Ole V.V.
哎呀,我只收到了你的评论的第一个版本。现在轮到你了。 :-) - Ole V.V.

1
这应该可以解决问题:
BusDetails=BusDetails.replaceAll("(\\W|^_)*", "");

该模式(\\W|^_)匹配任何非单词字符,同时排除_

0
BusDetails=BusDetails.replaceAll("[^_0-9]+", "");

这将保留整数,但不包括小数(需要添加“.”)


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