如何检查一个单词是日语还是英语?

5
我想在这个方法中区分英语单词和日语单词的处理过程:
if (english) {
    // say english
} else {
    // say not english
}

如何在JSP中实现此功能?
2个回答

14

日语字符位于特定的Unicode范围内:

  • U+3040–U+309F:平假名
  • U+30A0–U+30FF:片假名
  • U+4E00–U+9FBF:汉字

因此,您基本上只需要检查字符的代码点是否在已知范围内。

Set<UnicodeBlock> japaneseUnicodeBlocks = new HashSet<UnicodeBlock>() {{
    add(UnicodeBlock.HIRAGANA);
    add(UnicodeBlock.KATAKANA);
    add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS);
}};

String mixed = "This is a Japanese newspaper headline: ラドクリフ、マラソン五輪代表に1万m出場にも含み";

for (char c : mixed.toCharArray()) {
    if (japaneseUnicodeBlocks.contains(UnicodeBlock.of(c))) {
        System.out.println(c + " is a Japanese character");
    } else {
        System.out.println(c + " is not a Japanese character");
    }
}

当字符串包含混合的日语和拉丁字符(或其他字符)时,或者当字符串仅包含日语字符时,不清楚您想要何时说回日语。上面的示例应该至少是一个很好的起点。
请注意,这与JSP完全无关。 JSP只是一种Web演示技术,允许您动态生成HTML/CSS/JS代码。在JSP文件中编写Java代码被认为是不良实践

如果字符不是英文,该如何用英语实现这个? - Kareem Nour Emam
可以用 Objective-C 实现相同的功能吗?我想为俄语实现这个功能...请查看我的问题:http://stackoverflow.com/questions/9972055/how-to-check-if-a-char-lies-between-a-certain-unicode-range - Ankit Srivastava

0
据我所知,日语单词使用大于256的字符,而英语则不使用。您可以测试一个单词中的字符是否>= 256

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接