我需要确定我的输入所属的自然语言.目标是区分混合输入中的阿拉伯语和英语单词,其中输入是Unicode并从XML文本节点中提取.我注意到了这堂课Character.UnicodeBlock
.它与我的问题有关吗?我怎样才能让它发挥作用?
编辑:
该Character.UnicodeBlock
方法对阿拉伯语很有用,但显然不适用于英语(或其他欧洲语言),因为BASIC_LATIN
Unicode块包含符号和不可打印的字符以及字母.所以现在我正在使用带有正则表达式matches()
的String
对象的方法"[A-Za-z]+"
.我可以忍受它,但也许有人可以建议更好/更快的方式.
是的,你可以简单地使用Character.UnicodeBlock.of(char)
如果[A-Za-z]+
符合您的要求,您将找不到更快或更漂亮的东西.但是,如果要匹配Latin1块中的所有字母(包括带重音的字母和连字),可以使用:
Pattern p = Pattern.compile("[\\pL&&\\p{L1}]+");
这是所有Unicode字母集和所有Latin1字符集的交集.