从不包含非拉丁字符的字符串中删除所有特殊字符

时间:2014-04-16 19:42:57

标签: java regex string replace

我想删除除数字和普通a-z字符之外的字符串中的所有特殊字符。

我这样做:

text = text.replaceAll("[^a-zA-Z0-9 ]+", "");

这种方式的问题在于它还会删除所有非拉丁字符,如è,é,ê,ë等等。

非特殊字符(我要保留的字符)是指所有语言的所有数字和所有字母字符,或者至少尽可能多的字符。

我如何只删除特殊字符?

2 个答案:

答案 0 :(得分:3)

您可以尝试\p{L}代表所有数字,\p{N}代表所有数字:

text = text.replaceAll("[^\\p{L}\\p{N} ]+", "");

答案 1 :(得分:1)

我知道你说正则表达式,但如果番石榴是一个选项

CharMatcher.JAVA_LETTER_OR_DIGIT.retainFrom("èêAAAGRt123")