2014-04-16 48 views
4

我想从不同的数字和正常的A-Z字符的字符串,删除所有的特殊字符删除所有特殊字符。从字符串不包括非拉丁字符

我这样做是这样的:

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

的问题,这种方式是,它也将删除像E,E,E,E和许多其他所有非拉丁字符。

通过非特殊字符(那些我想继续)我的意思是所有的数字和所有为所有语言的字母字符或至少尽可能多的。

如何只删除了特殊字符?

+1

也许你应该定义哪些特殊字符是。哪一组更大? –

+0

@SotiriosDelimanolis特殊字符是除所有语言的数字和字母以外的所有字符。 –

回答

3

您可以尝试\p{L}所有信件和\p{N}所有数字:

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

+1,虽然你不需要量词,你可以使用'\\ P'而不是类否定。 – Mena

+0

试过'[\\ p {L} \\ p {N}] +'和它吃一切:| –

+0

,因为第二项取消第一项。你必须更换两次。不幸的是'Alnum' posix不适用于Unicode ... – Mena

1

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

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