我需要删除一些特定的“特殊”字符,如果它们出现,用空字符串替换它们。我目前遇到了正则表达式的问题,可能是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;
}
这些都是我需要删除的字符:
- [ ] ^ / , ' * : . ! > < ~ @ # $ % + = ? | " \ ) (
我显然遗漏了一些东西,我想不出如何把所有的东西都放在一行中。帮助?
发布于 2016-03-20 10:52:39
您的代码实际上不起作用,因为.replaceAll("$", "")
用空字符串替换了字符串的结尾。要替换文字$
,需要对其进行转义。删除管道符号时也存在同样的问题。
您所需要做的就是将需要替换的字符放入一个字符类中,并应用+
量词以获得更好的性能,如下所示:
string = string.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
注意,在字符类中,大多数“特殊正则表达式元字符”失去了它们的特殊状态,您只需转义[
、]
、\
、一个连字符(如果它不在字符类的开头/结尾)和一个^
(如果它是“正”字符类中的第一个符号)。
String s = "-[]^/,'*:.!><~@#$%+=?|\"\\()TEXT";
s = s.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
System.out.println(s); // => TEXT
发布于 2016-03-20 10:10:27
使用这些代码
String REGEX = "YOUR_REGEX";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(yourString);
yourString = m.replaceAll("");
更新:
你的REGEX看起来像这样
String REGEX = "-|\\[|\\]|\\^|\\/|,|'|\\*|\\:|\\.|!|>|<|\\~|@|#|\\$|%|\\+|=\\?|\\||\\\\|\\\\\\\\|\\)|\\(";
SAPMLE :
String yourString = "#My (name) -is @someth\ing"";
//Use Above codes
Log.d("yourString",yourString);
输出
https://stackoverflow.com/questions/36112397
复制相似问题