2014-04-16 70 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")