我一直试图解决这个问题一段时间,我正在使用.replaceAll删除字符串中不是字母或数字的任何字符。我尝试使用Pattern.quote(),但我无法使其正常工作。然后我尝试使用\ Q和\ E,但它仍然无法工作,即使我对不同数量的反斜杠进行了挫败尝试。这是我第一次尝试以这种方式逃脱,所以任何帮助都会非常感激。
这是有问题的一行:
return input.toLowerCase().replaceAll("\\Q !"#$%&'()*+,-./:;<=>?@[]\^_`~{}|\\E","");
这里一个简单的解决方法是将所有特殊字符放在一个字符类中:
String input = "abc%#$123";
input = input.toLowerCase().replaceAll("[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`~{}|]","");
System.out.println(input);
abc123
角色类承认您的大多数特殊字符为未转义的文字。例外是双引号,反斜杠和开/关方括号,但仍然需要转义。
注意:删除任何非字母数字的内容可能要容易得多,例如:
input = input.replaceAll("[^A-Za-z0-9]", "");
但是也许有上面会排除的字符,但你真的想保留。
return input.toLowerCase()。replaceAll(“[^ A-Za-z0-9()\ [\]]”,“”);