在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

角色类承认您的大多数特殊字符为未转义的文字。例外是双引号,反斜杠和开/关方括号,但仍然需要转义。

Demo

注意:删除任何非字母数字的内容可能要容易得多,例如:

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方法中转义一长串元字符的主要内容,如果未能解决你的问题,请参考以下文章

存储一长串值的最佳方法

验证一长串随机邮政编码的最佳方法

编写一长串 if 语句的速记方法

如何为一长串整数创建优化的迭代器?

设计带有一长串查询参数的 RESTful 查询 API [关闭]

如何在 VueJS 中将一长串“手表”转换为功能方式?