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("[,.;:?!'\\-_\"/()\\{}]", "");
'-_
匹配 和 之间'
的每个字符_
。
就像另外两个人说的那样,逃避-
角色—— \\-
。
此外,\\{
评估结果与 相同{
,这是故意的吗?如果没有,请尝试转义反斜杠 -\\\\{