Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以根据字符的属性对字符进行分类。例如,X 是大写字母,4 是十进制数字。检查字符属性是验证终端用户输入的数据的常用方法。例如,如果你在线销售图书,你的订单输入屏幕应验证数量字段中的字符是否都是数字。
不习惯编写全局软件的开发人员可以通过将字符与字符常量进行比较来确定字符的属性。例如,他们可能会编写如下代码:
char ch; //... // This code is WRONG! // check if ch is a letter if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) // ... // check if ch is a digit if (ch >= '0' && ch <= '9') // ... // check if ch is a whitespace if ((ch == ' ') || (ch =='\n') || (ch == '\t')) // ...
上面的代码是 错误的,因为它只适用于英语和少数一些语言。要使前一个示例国际化,请将其替换为以下语句:
char ch; // ... // This code is OK! if (Character.isLetter(ch)) // ... if (Character.isDigit(ch)) // ... if (Character.isSpaceChar(ch)) // ...
Character
方法依赖于 Unicode 标准来确定字符的属性。Unicode 是一种支持世界主要语言的 16 位字符编码。在 Java 编程语言中,char
值表示 Unicode 字符。如果使用相应的 Character
方法检查 char
的属性,则代码将适用于所有主要语言。例如,如果字符是中文,德语,阿拉伯语或其他语言的字母,Character.isLetter
方法将返回 true
。
以下列表给出了一些最有用的 Character
比较方法。Character
API 文档完全指定了这些方法。
isDigit
isLetter
isLetterOrDigit
isLowerCase
isUpperCase
isSpaceChar
isDefined
Character.getType
方法返回字符的 Unicode 类别。每个类别对应于 Character
类中定义的常量。例如,getType
返回字符 A 的 Character.UPPERCASE_LETTER
常量。有关 getType
返回的类别常量的完整列表,请参阅 Character
API 文档。以下示例显示如何使用 getType
和 Character
类别常量。这些 if
语句中的所有表达式都是 true
:
if (Character.getType('a') == Character.LOWERCASE_LETTER) // ... if (Character.getType('R') == Character.UPPERCASE_LETTER) // ... if (Character.getType('>') == Character.MATH_SYMBOL) // ... if (Character.getType('_') == Character.CONNECTOR_PUNCTUATION) // ...