我想在字符串中仅显示a-z0-9
,其他字符应替换为空字符串
String s=this.saveFileName.replaceAll("/[a-z0-9. ]/", "");
这些不起作用,任何想法为什么?
答案 0 :(得分:14)
试试这个:
String s = "abc123ABC!@#$%^;'xyz";
String newString = s.replaceAll("[^a-z0-9]", "");
//newString is now "abc123xyz"
这利用了字符类中的否定(^)运算符,它基本上表示“匹配除以下字符之外的所有内容。”
此外,在定义Java正则表达式时不需要斜杠。
答案 1 :(得分:2)
您不需要这些/
/
。
像PHP这样的语言希望你将正则表达式放在一对分隔符之间,而Java则不然。
由于您要替换a-z0-9
以外的所有内容,因此您需要正则表达式[^a-z0-9]
或[^a-z\\d]
[..]
是一个char类,用于匹配其中列出的char。 char类还可以包含匹配一个小写字母的[a-z]
等范围。现在char类开头的^
否定了它,因此[^a-z]
匹配任何一个字符 而不是 一个小写字母。
答案 2 :(得分:1)
您是否在没有//
标记的情况下尝试过它?
String s=this.saveFileName.replaceAll("[^a-z0-9]", "");
答案 3 :(得分:0)
这个正则表达式似乎可以解决问题:
String s="Testing-1.2.3_$".replaceAll("[^a-z0-9. ]", "");
输出:
esting1.2.3
^符号否定了集合,不需要斜杠。