java - Android Java - String .replaceAll 替换特定字符(正则表达式)

标签 java android regex

我需要删除一些特定的“特殊”字符,并在出现时用空字符串替换它们。 我目前遇到正则表达式问题,可能是 Java 转义问题。我不能把它们都放在一起,它就是行不通,我试了很多! T_T

目前我正在一个一个地做这有点傻,但至少现在它是有效的,就像那样:

public static String filterSpecialCharacters(String string) {
    string = string.replaceAll("-", "");
    string = string.replaceAll("\\[", "");
    string = string.replaceAll("\\]", "");
    string = string.replaceAll("\\^", "");
    string = string.replaceAll("/", "");
    string = string.replaceAll(",", "");
    string = string.replaceAll("'", "");
    string = string.replaceAll("\\*", "");
    string = string.replaceAll(":", "");
    string = string.replaceAll("\\.", "");
    string = string.replaceAll("!", "");
    string = string.replaceAll(">", "");
    string = string.replaceAll("<", "");
    string = string.replaceAll("~", "");
    string = string.replaceAll("@", "");
    string = string.replaceAll("#", "");
    string = string.replaceAll("$", "");
    string = string.replaceAll("%", "");
    string = string.replaceAll("\\+", "");
    string = string.replaceAll("=", "");
    string = string.replaceAll("\\?", "");
    string = string.replaceAll("|", "");
    string = string.replaceAll("\"", "");
    string = string.replaceAll("\\\\", "");
    string = string.replaceAll("\\)", "");
    string = string.replaceAll("\\(", "");
    return string;
}

这些都是我需要删除的字符:

- [ ] ^ / , ' * : . ! > < ~ @ # $ % + = ? | " \ ) (

我显然遗漏了一些东西,我无法弄清楚如何将它们全部放在一行中。帮忙?

最佳答案

您的代码实际上不起作用,因为 .replaceAll("$", "") 将字符串的结尾替换为空字符串。要替换文字 $,您需要对其进行转义。同样的问题是删除管道符号。

您需要做的就是将需要替换的字符放入字符类中,并应用 + 量词以获得更好的性能,如下所示:

string = string.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");

请注意,在一个字符类中,大多数“特殊正则表达式元字符”都失去了它们的特殊地位,你只需要转义[, ], \,一个连字符(如果它不在字符类的开头/结尾)和一个 ^(如果它是“正”字符类中的第一个符号)。

DEMO :

String s = "-[]^/,'*:.!><~@#$%+=?|\"\\()TEXT";
s = s.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
System.out.println(s); // => TEXT

关于java - Android Java - String .replaceAll 替换特定字符(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112397/

相关文章:

android - android中的按钮点击 Action ?

javascript - 使用正则表达式模拟通配符(glob)

java - 如何从 servlet 发出具有内容类型和内容的 GET 和 POST 请求

java - 没有找到主要类

java - 在jdbc中调用存储过程

android - 在 ImageView 的图像上设置背景

Java:如果使用Pattern.quote(),是否保证在编译期间不会抛出PatternSyntaxException?

javascript - 如何获得textarea中的最大数字?

java - 如何让android直接连接mysql

java - 如何将 MimeMultipart 添加到另一个 MimeMultipart?