Java:如何检查字符是否属于特定的unicode块?

2022-09-03 01:09:26

我需要确定我的输入属于哪种自然语言。目标是在混合输入中区分阿拉伯语英语单词,其中输入是 Unicode,是从 XML 文本节点中提取的。我注意到了这个班级。它与我的问题有关吗?我怎样才能让它工作?Character.UnicodeBlock

编辑:这种方法对阿拉伯语很有用,但显然不适用于英语(或其他欧洲语言),因为Unicode块涵盖了符号和不可打印的字符以及字母。所以现在我使用带有正则表达式的对象方法。我可以忍受它,但也许有人可以建议一种更好/更快的方法。Character.UnicodeBlockBASIC_LATINmatches()String"[A-Za-z]+"


答案 1

是的,你可以简单地使用Charact.UnicodeBlock.of(char)


答案 2

如果符合您的要求,您将找不到更快或更漂亮的东西。但是,如果要匹配 Latin1 块中的所有字母(包括重音字母和连字),可以使用以下命令:[A-Za-z]+

Pattern p = Pattern.compile("[\\pL&&\\p{L1}]+");

这是所有 Unicode 字母集和所有 Latin1 字符集的交集。