根据API文档,如果字符具有以下任何常规类别类型,则isLetter()返回true:UPPERCASE_LETTER(Lu),LOWERCASE_LETTER(Ll),TITLECASE_LETTER(Lt),MODIFIER_LETTER(Lm),OTHER_LETTER(Lo)。如果比较isAlphabetic(),则它具有相同的内容,但添加LETTER_NUMBER(Nl),以及具有Other_Alphabetic属性的任何字符。
在实践中这意味着什么?每个字母都是字母,但并非每个字母都是字母-在Java 7(使用Unipre
6.0.0)中,BMP中有824个字符是字母,而不是字母。一些示例包括0345(用于多调希腊语的组合器),始于05B0的希伯来语元音点(niqqud),诸如0610的锯(“愿他安息”)之类的阿拉伯语敬语,阿拉伯语元音点……等等。
但基本上,对于英文文本而言,区别没有区别。对于其他一些语言,这种区别可能会有所作为,但是很难预先预测出实际可能会有什么区别。如果可以选择,最好的答案可能是isLetter()-将来可以随时更改以允许添加其他字符,但是减少可接受的字符集可能会更困难。



