如何删除特殊字符而不删除另一个语言中的文本?

时间:2018-01-11 11:00:03

标签: java regex

我使用下面的代码从字符串中删除笑脸和特殊字符

تحریک 

انصاف نے زینب کے قتل کے خلاف مذمتی قرارداد سندھ اسمبلی میں جمع کرا دی

 کراچی:مذمتی قرارداد تحریک انصاف کے رکن…

这对英语很有用。

但是,如果我的文字是这样的urdu:

.descContainer

然后用whitspace替换urdu中的所有文本。

如何从字符串中删除特殊字符但确保它不会删除urdu文本?

1 个答案:

答案 0 :(得分:1)

所有非单词字符都可以与\W速记字符类匹配,为了使其能够识别Unicode,您只需要传递Pattern.UNICODE_CHARACTER_CLASS(或(?U)内嵌嵌入式标志选项)到正则表达式编译器:

s = s.replaceAll("(?U)\\W", " ");

请参阅Java online demo

如果您还需要删除_ char(它被视为单词char),请将\W_添加到字符类中:

s = s.replaceAll("(?U)[\\W_]", " ");

要用单个空格替换1个以上的特殊字符,请在模式后添加+个量词:

s = s.replaceAll("(?U)[\\W_]+", " ");