0

我一直在尝试解决这个问题一段时间,我正在使用 .replaceAll 删除字符串中不是字母或数字的任何字符。我尝试使用 Pattern.quote(),但无法使其正常工作。然后我尝试使用 \Q 和 \E,但它仍然无法正常工作,即使我对不同数量的反斜杠的尝试感到沮丧。这是我第一次尝试以这种方式逃脱,所以任何帮助都将不胜感激。

这是有问题的行:

return input.toLowerCase().replaceAll("\\Q !"#$%&'()*+,-./:;<=>?@[]\^_`~{}|\\E","");
4

2 回答 2

1

一个简单的解决方法是将所有特殊字符放入字符类中:

String input = "abc%#$123";
input = input.toLowerCase().replaceAll("[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`~{}|]","");
System.out.println(input);

abc123

字符类承认您的大多数特殊字符是未转义的文字。例外情况是双引号、反斜杠和打开/关闭方括号,但它们仍然需要转义。

演示

注意:删除任何不是字母数字的东西可能会容易得多,例如

input = input.replaceAll("[^A-Za-z0-9]", "");

但也许有上面会排除但你真的想保留的字符。

于 2018-03-05T07:15:17.160 回答
0

return input.toLowerCase().replaceAll("[^A-Za-z0-9()\[\]]", "");

资料来源:如何从字符串中删除无效字符?

于 2018-03-05T07:15:35.813 回答