Java中的Character.isAlphabetic()和Character.isLetter()有什么区别?什么时候应该使用一个什么时候应该使用另一个?
Sim*_*ane 39
根据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(使用Unicode 6.0.0)中,BMP中有824个字符,它们是字母而不是字母.一些例子包括0345(一个用于多音希腊语的组合器),从05B0开始的希伯来元音点(niqqud),在0610的阿拉伯敬语,如锯("和平在他身上"),阿拉伯语元音点...列表继续.
但基本上,对于英文文本,区别没有区别.对于其他一些语言而言,区别可能有所不同,但很难预先预测实际差异.如果有一个选择,最好的答案可能是isLetter() - 可以随时更改以允许将来添加其他字符,但减少接受字符集可能会更难.
| 归档时间: |
|
| 查看次数: |
29048 次 |
| 最近记录: |