在Java .replaceAll方法中转义一长串元字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java .replaceAll方法中转义一长串元字符相关的知识,希望对你有一定的参考价值。
我一直试图解决这个问题一段时间,我正在使用.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() []]”,“”);
资料来源:How to remove invalid characters from a string?
以上是关于在Java .replaceAll方法中转义一长串元字符的主要内容,如果未能解决你的问题,请参考以下文章