通常,为了从字符串中删除非单词字符,可以使用replaceAll方法:
String cleanWords = "some string with non-words such as ';'".replaceAll("\\W", "");以上返回一个已清除的字符串"somestringwithnonwordssuchas".。
但是,如果字符串包含西里尔字母,它们就会被识别为非单词,并从字符串中删除。预计西里尔字母仍将保留。这就是问题所在。
假设字符串具有UTF-8编码,什么是正确的方法来处理移除非单词字符的任务?
发布于 2012-08-23 08:24:08
试试[^\\p{L}]。它应该匹配除字母以外的每个Unicode代码点。
班级对可能的字符类有相当全面的描述。请注意,POSIX字符类是ASCII--默认情况下是ASCII,不会对您有很大帮助,您需要使用Unicode特定的类。
请注意,有一个标志将POSIX类的行为更改为符合Unicode标准的这一部分 (基本上使它们等价于它们最接近的Unicode感知的等价物)。
https://stackoverflow.com/questions/12087479
复制相似问题