java - Java 中的Character.isAlphabetic 和Character.isLetter 有什么区别?

标签 java unicode

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/

相关文章:

java - 我们如何处理 java 流中的异常

delphi - 将 UnicodeString 转换为 AnsiString

c++ - 被 Unicode、Boost、C++、codecvts 难倒

java - 使用另一个 java 文件中的变量

Java 前缀运算符行为

java - 将 Java 线程映射到 native pthread

java - 在照片编辑应用程序中实现 "undo"功能的最佳方法是什么?

unicode - 🇩🇪 字符在 Swift 字符串中是如何表示的?

php - 我如何最好地使用 php 删除 XHTML 认为无效的 unicode 字符?

html - 为什么这些日文字符有不同的最高值?