String foo = "a3#4#b";
String afterPunctutationRemoval = foo.replaceAll("[,.;:?!'-_\"/()\\{}]", "");
System.out.println(afterPunctutationRemoval);
它给了我一个“## b”的结果,有人能解释我为什么吗?
不应该按原样返回字符串吗?
答案 0 :(得分:11)
您的角色类包含的范围'
.. _
也匹配数字。
将-
放在角色类的开头或结尾:
foo.replaceAll("[,.;:?!'_\"/()\\{}-]", "")
或逃避它:
foo.replaceAll("[,.;:?!'\\-_\"/()\\{}]", "");
答案 1 :(得分:5)
'-_
匹配'
和_
之间的每个字符。
答案 2 :(得分:0)
就像其他两个人说的那样,逃避-
字符 - \\-
。
此外,\\{
评估与{
相同,是否有意?如果没有,请尝试转义反斜杠 - \\\\{