通常,为了从String中删除非单词字符,可以使用replaceAll
方法:
String cleanWords = "some string with non-words such as ';'".replaceAll("\\W", "");
以上内容返回已清理的字符串“somestringwithnonwordssuchas”。
但是,如果字符串包含西里尔字符,则会将其识别为非单词,并从字符串中删除。预计西里尔字符将保留。因此问题。
假设字符串具有UTF-8编码,什么是处理删除非单词字符的任务的正确方法,假设字符串具有UTF-8编码?
答案 0 :(得分:7)
试试[^\\p{L}]
。这应该匹配除字母之外的每个Unicode代码点。
Pattern
class对可能的角色类进行了非常详尽的描述。请注意,默认情况下POSIX字符类仅为ASCII,对您没有多大帮助,您需要使用特定于Unicode的类。
请注意,UNICODE_CHARACTER_CLASS
flag会改变POSIX类的行为以符合this section of the Unicode Standard(基本上使它们等同于最接近的Unicode识别等价物)。