我想通过单个下划线" "
从我的java字符串中删除多次出现的特殊字符,例如"-"
,"!"
,"_"
,"_"
。
我试过了
replaceAll("([\\s\\-\\!])\\1+","_")
它似乎用下划线替换连续相同类型的特殊字符,但不起作用。 例如:
Hello!!! World
变为
Hello__World
(2个下划线。)但它应该是Hello_World
。
对于像Hello - World
这样的情况,它也会失败。
我也尝试使用正则表达式并制作了正则表达式,如
replaceAll("([^a-zA-Z0-9])\\1+","_")
但它仍无济于事。我怎样才能实现它?
答案 0 :(得分:4)
请注意,\1
是与第一个捕获组匹配的内容的反向引用。要实际匹配字符类中的一个或多个字符,只需使用+
量词:
[\\s!-]+
所以,使用
str = str.replaceAll("[\\s!-]+","_");
请参阅IDEONE demo