我使用下面的代码从字符串中删除笑脸和特殊字符
String utf8TweetText = tweet.getText();
Pattern unicodeOutliers = Pattern.compile("[^\\x00-\\x7F]",
Pattern.UNICODE_CASE | Pattern.CANON_EQ
| Pattern.CASE_INSENSITIVE);
Matcher unicodeOutlierMatcher = unicodeOutliers.matcher(utf8TweetText );
utf8TweetText = unicodeOutlierMatcher.replaceAll(" ");
这对于英语来说非常有用。
但是,如果我的文本是这样的乌尔都语:
تحریک
انصاف نے زینب کے قتل کے خلاف مذمتی قرارداد سندھ اسمبلی میں جمع کرا دی
کراچی:مذمتی قرارداد تحریک انصاف کے رکن…
然后它将乌尔都语中的所有文本替换为空格。
如何从字符串中删除特殊字符,但确保它不会删除乌尔都语文本?
最佳答案
所有非单词字符都可以与 \W
速记字符类匹配,并且要使其能够识别 Unicode,您只需传递 Pattern.UNICODE_CHARACTER_CLASS
即可。 (或 (?U)
内联嵌入标志选项)到正则表达式编译器:
s = s.replaceAll("(?U)\\W", " ");
请参阅Java online demo .
如果您还需要删除 _
字符(它被视为单词字符),请将 \W
和 _
添加到字符类中:
s = s.replaceAll("(?U)[\\W_]", " ");
要将 1 个以上特殊字符替换为单个空格,请在模式后添加 +
量词:
s = s.replaceAll("(?U)[\\W_]+", " ");
关于java - 如何删除特殊字符而不删除另一种语言的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205486/