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