文档

Java™ 教程
隐藏目录
检查字符属性
路径:国际化
课程:处理文本

检查字符属性

您可以根据字符的属性进行分类。例如,X是大写字母,4是十进制数字。检查字符属性是验证最终用户输入数据的常见方式。例如,如果您在线销售图书,订单输入屏幕应该验证数量字段中的字符是否都是数字。

不习惯编写全球化软件的开发人员可能会通过将其与字符常量进行比较来确定字符的属性。例如,他们可能会编写如下代码:

char ch;
//...

// 这段代码是错误的!

// 检查ch是否为字母
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
    // ...

// 检查ch是否为数字
if (ch >= '0' && ch <= '9')
    // ...

// 检查ch是否为空格
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
    // ...

上述代码是错误的,因为它只适用于英语和少数其他语言。要国际化前面的示例,请将其替换为以下语句:

char ch;
// ...

// 这段代码是正确的!

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文档中完整地指定了这些方法。

Character.getType方法返回字符的Unicode类别。每个类别对应于Character类中定义的常量。例如,对于字符A,getType返回Character.UPPERCASE_LETTER常量。有关getType返回的类别常量的完整列表,请参阅Character API文档。以下示例显示了如何使用getTypeCharacter类别常量。这些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)
    // ...

上一页:与文本一起工作
下一页:比较字符串