1. ホーム
  2. java

[解決済み] JavaにおけるCharacter.isAlphabeticとCharacter.isLetterの違いは何ですか?

2022-02-07 20:10:24

質問

JavaにおけるCharacter.isAlphabetic()とCharacter.isLetter()の違いは何ですか?どのような場合に一方を使用し、どのような場合にもう一方を使用すべきでしょうか?

どのように解決するのですか?

によると API ドキュメント isLetter() は、文字が以下の一般的なカテゴリタイプのいずれかを持つ場合に真を返します。UPPERCASE_LETTER (Lu), LOWERCASE_LETTER (Ll), TITLECASE_LETTER (Lt), MODIFIER_LETTER (Lm), OTHER_LETTER (Lo) です。isAlphabetic() を比較すると、同じですが、LETTER_NUMBER (Nl) と Other_Alphabetic プロパティを持つすべての文字が追加されています。

これは実際にはどうなのでしょうか?すべての文字がアルファベットですが、すべてのアルファベットが文字ではありません。Java 7 (Unicode 6.0.0 を使用) では、アルファベットであっても文字ではない文字がBMPに824個あります。例えば、0345(多音語ギリシャ語で使われるコンバイナー)、05B0から始まるヘブライ語の母音点(niqqud)、0610から始まるアラビア語の敬称(see(peace be upon him" ))、アラビア語の母音点などなど、数え上げればきりがないほどあります。

しかし、基本的に英語のテキストでは、この区別は何の違いもありません。他の言語では、区別することで違いが出るかもしれませんが、実際にどのような違いが出るかを事前に予測することは困難です。もし選択肢があるのなら、最善の答えはisLetter()かもしれません。