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

Joz*_*eRi 9 java regex android

我需要删除一些特殊的"特殊"字符,如果它们出现则用空字符串替换它们.我目前正在使用正则表达式的问题,可能是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;
}
Run Code Online (Sandbox Code Playgroud)

这些都是我需要删除的角色:

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

我显然遗漏了一些东西,我无法弄清楚如何把它全部放在一行.救命?

Wik*_*żew 9

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

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

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

需要注意的是字符类中,最"特别正则表达式元字符"失去其特殊的地位,你只需要逃跑[,],\,连字符(如果不是在字符类的开始/结束),和^(如果它是"正面"字符类中的第一个符号.

演示:

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


Shr*_*hna 5

使用这些代码

String REGEX = "YOUR_REGEX";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(yourString);
yourString = m.replaceAll("");
Run Code Online (Sandbox Code Playgroud)

更新:

您的REGEX看起来像

String REGEX = "-|\\[|\\]|\\^|\\/|,|'|\\*|\\:|\\.|!|>|<|\\~|@|#|\\$|%|\\+|=\\?|\\||\\\\|\\\\\\\\|\\)|\\(";
Run Code Online (Sandbox Code Playgroud)

SAPMLE:

String yourString = "#My (name) -is @someth\ing"";
//Use Above codes
Log.d("yourString",yourString);
Run Code Online (Sandbox Code Playgroud)

输出值

在此处输入图片说明