我希望从字符串中删除所有特殊字符,只保留数字和普通的a-z字符。
我是这样做的:
text = text.replaceAll("[^a-zA-Z0-9 ]+", "");
使用这种方法的问题是它也会删除所有非拉丁字符,如è,é,ê,ë和许多其他字符。
所谓的非特殊字符(我想保留的字符)是指所有数字和所有语言的字母字符,或者至少尽可能多的语言。
我该如何只删除特殊字符?
我希望从字符串中删除所有特殊字符,只保留数字和普通的a-z字符。
我是这样做的:
text = text.replaceAll("[^a-zA-Z0-9 ]+", "");
使用这种方法的问题是它也会删除所有非拉丁字符,如è,é,ê,ë和许多其他字符。
所谓的非特殊字符(我想保留的字符)是指所有数字和所有语言的字母字符,或者至少尽可能多的语言。
我该如何只删除特殊字符?
\p{L}
表示所有字母,\p{N}
表示所有数字:text = text.replaceAll("[^\\p{L}\\p{N} ]+", "");
\\P
代替类否定。 - Mena[\\P{L}\\P{N} ]+
,结果它吞掉了所有东西 :| - Sabuj HassanAlnum
posix 无法与 Unicode 兼容... - Mena我知道你说过正则表达式,但如果guava是一个选项:
CharMatcher.JAVA_LETTER_OR_DIGIT.retainFrom("èêAAAGRt123")