英文字符往往在这 4 个 Unicode 块中:
ArrayList<Character.UnicodeBlock> english = new ArrayList<>();
english.add(Character.UnicodeBlock.BASIC_LATIN);
english.add(Character.UnicodeBlock.LATIN_1_SUPPLEMENT);
english.add(Character.UnicodeBlock.LATIN_EXTENDED_A);
english.add(Character.UnicodeBlock.GENERAL_PUNCTUATION);
因此,如果您有一个字符串,您可以遍历所有字符并查看每个字符所在的 Unicode 块:
for (char currentChar : myString.toCharArray())
{
Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(currentChar);
if (english.contains(unicodeBlock))
{
// This character is English
}
}
如果它们都是英文的,那么你知道你有全是英文的字符。您可以对任何语言重复此操作;您只需要弄清楚每种语言使用的 Unicode 块。
注意:这并不意味着您已经证明该语言是英语。您只证明了它使用的是英文字符。它可能是法语、德语、西班牙语或其他字符与英语有很多重叠的语言。
还有其他方法可以检测实际的自然语言。像 langdetect 这样的库,我已经非常成功地使用了,可以为你做到这一点:
https://code.google.com/p/language-detection/