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