Android Java-String.replaceAll替换特定字符(regex)

Android Java-String.replaceAll替换特定字符(regex),java,android,regex,Java,Android,Regex,我需要删除一些特定的“特殊”字符,并在它们出现时用空字符串替换它们。 我目前在正则表达式方面遇到了问题,可能是Java转义的问题。我不能把它们都放在一起,只是不起作用,我试了很多!图特 目前,我正在一个接一个地做这件事,这有点傻,但至少现在它是有效的,就像这样: public static String filterSpecialCharacters(String string) { string = string.replaceAll("-", ""); string = st

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

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

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;
}
公共静态字符串过滤器特殊字符(字符串){
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 REGEX = "YOUR_REGEX";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(yourString);
yourString = m.replaceAll("");
更新:

你的正则表达式看起来像

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


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

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

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

放入字符类:
[!~@^()…]
它看起来非常像
string=string.replaceAll(“\\p{Punct}+”,”)
。请参阅:
\p{Punct}
标点符号:其中一个
!“$%&'()*+,-./:;?[]^^{{~
。但是,我发现你的类中定义的符号少了一点。这是如何回答这个问题的?首先感谢你花时间帮助我。非常感谢!第二点,->String REGEX=“\”[^/,”*:!~@$%^&()+=?()\“\!\[\$-]+”;Pattern p=Pattern.compile(REGEX);Matcher m=p.Matcher(String);string=m.replaceAll(“”)-这不起作用。你能发布你当前的字符串吗。你确定你使用的是有效的正则表达式吗?@shrekrishna我确实觉得这很有用!这当然是实现我期望目标的另一个好方法,非常感谢你花时间提供答案!非常感谢。管道(
|
)也需要在他的原始代码中转义(但不是在你的代码中)。是的,在答案中添加了一个注释。我本想说他应该转义,但没有。它看起来非常像
string=string.replaceAll(\\p{Punct}+”,“)
。请参见:
\p{Punct}
标点符号:其中一个
!“$%&'”*+,-:?@[]^{{~
。但是,我发现类中定义的符号少了一点。
string = string.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
String s = "-[]^/,'*:.!><~@#$%+=?|\"\\()TEXT";
s = s.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
System.out.println(s); // => TEXT