Java中Character.isAlphabetic()和Character.isLetter()有什么区别?什么时候应该使用其中一种,什么时候应该使用另一种?
最佳答案
根据API docs ,如果角色具有以下任何常规类别类型,则 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 开始的阿拉伯语敬语如 saw(“愿他安息”)、阿拉伯语元音点……这样的例子不胜枚举。
但基本上,对于英文文本,这种区别没有什么区别。对于其他一些语言,这种区别可能会产生影响,但很难提前预测实际中可能存在的差异。如果可以选择,最好的答案可能是 isLetter() - 人们总是可以更改以允许将来添加更多字符,但减少接受的字符集可能会更困难。
关于java - Java 中的Character.isAlphabetic 和Character.isLetter 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304804/