首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不删除其他语言文本的情况下删除特殊字符?

如何在不删除其他语言文本的情况下删除特殊字符?
EN

Stack Overflow用户
提问于 2018-01-11 19:00:03
回答 1查看 85关注 0票数 1

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

代码语言:javascript
运行
复制
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(" "); 

这对英语很有效。

但是,如果我的文本是用乌尔都语编写的,如下所示:

代码语言:javascript
运行
复制
تحریک 

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

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

然后用空格替换乌尔都语中的所有文本。

如何删除字符串中的特殊字符,但不删除urdu文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-11 19:03:41

所有非单词字符都可以与\W速记字符类匹配,要使其支持Unicode,只需将Pattern.UNICODE_CHARACTER_CLASS (或(?U)内联嵌入式标志选项)传递给正则表达式编译器:

代码语言:javascript
运行
复制
s = s.replaceAll("(?U)\\W", " ");

请参阅Java online demo

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

代码语言:javascript
运行
复制
s = s.replaceAll("(?U)[\\W_]", " ");

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

代码语言:javascript
运行
复制
s = s.replaceAll("(?U)[\\W_]+", " ");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48205486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档