如何将日语字符分类为汉字或假名?

2022-09-03 08:34:16

鉴于下面的文本,如何将每个字符分类为假名汉字

誰か確認上記これらのフ

要得到这样的东西

誰 - kanji
か - kana
確 - kanji
認 - kanji 
上 - kanji 
記 - kanji 
こ - kana 
れ - kana
ら - kana
の - kana
フ - kana

(抱歉,如果我做错了。


答案 1

此功能内置于 Character.UnicodeBlock 类中。与日语相关的 Unicode 块的一些示例:

Character.UnicodeBlock.of('誰') == CJK_UNIFIED_IDEOGRAPHS
Character.UnicodeBlock.of('か') == HIRAGANA
Character.UnicodeBlock.of('フ') == KATAKANA
Character.UnicodeBlock.of('フ') == HALFWIDTH_AND_FULLWIDTH_FORMS
Character.UnicodeBlock.of('!') == HALFWIDTH_AND_FULLWIDTH_FORMS
Character.UnicodeBlock.of('。') == CJK_SYMBOLS_AND_PUNCTUATION

但是,一如既往,魔鬼在细节中:

Character.UnicodeBlock.of('A') == HALFWIDTH_AND_FULLWIDTH_FORMS

其中 是全角字符。因此,这与上面的半角片假名属于同一类别。请注意,全宽与正常(半角)不同:A

Character.UnicodeBlock.of('A') == BASIC_LATIN

答案 2

使用像这样的表格来确定哪些unicode值用于片假名和汉字,然后您可以简单地将字符转换为int并检查它所属的位置,例如

int val = (int)て;
if (val >= 0x3040 && val <= 0x309f)
  return KATAKANA
..

推荐