拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Character#isAlphabetic与Character#isLetter

Character#isAlphabetic与Character#isLetter

白鹭 - 2021-11-24 1297 0 0

1.概述

在本教程中,我们将简要介绍每个定义的Unicode代码点或字符范围的一些常规类别类型,以了解字母和字母字符之间的区别

此外,我们将研究Java中**Character类的isAlphabetic()isLetter()方法**。最后,我们将介绍这些方法之间的异同。

2. Unicode字符的常规类别类型

Unicode字符集(UCS)包含1,114,112个代码点:U + 0000-U + 10FFFF。字符和代码点范围按类别分组。

Character类提供getType()方法的两个重载版本,该方法返回一个值,该值指示字符的常规类别类型

让我们看一下第一种方法的签名:

public static int getType(char ch)

此方法不能处理补充字符。为了处理包括补充字符在内的所有Unicode字符,Java的Character类提供了具有以下签名的重载getType方法:

public static int getType(int codePoint)

接下来,让我们开始研究一些常规类别类型。

2.1。 UPPERCASE_LETTER

UPPERCASE_LETTER常规类别类型表示大写字母。

当我们以大写字母(例如' U ')调用CharactergetType方法时,该方法返回值1,该值等于UPPERCASE_LETTER枚举值:

assertEquals(Character.UPPERCASE_LETTER, Character.getType('U'));

2.2。 LOWERCASE_LETTER

LOWERCASE_LETTER常规类别类型与小写字母关联。

在小写字母(例如' u ')上调用CharactergetType方法时,该方法将返回值2,该值与LOWERCASE_LETTER的枚举值相同:

assertEquals(Character.LOWERCASE_LETTER, Character.getType('u'));

2.3。 TITLECASE_LETTER

接下来, TITLECASE_LETTER常规类别表示标题大小写字符。

有些字符看起来像成对的拉丁字母。当我们在此类Unicode字符上调用CharactergetType方法时,它将返回值3,该值等于TITLECASE_LETTER枚举值:

assertEquals(Character.TITLECASE_LETTER, Character.getType('\u01f2'));

此处,Unicode字符' \u01f2 '表示拉丁大写字母' D ',后跟\u01f2的小写字母' Z '。

2.4。 MODIFIER_LETTER

Unicode标准中的修饰词是“通常以某种方式修饰的另一个字母旁边写的字母或符号”。

MODIFIER_LETTER常规类别类型表示此类修饰语字母。

例如,修饰语小H ,' ʰ ',当传递给CharactergetType方法时,返回值4,该值与MODIFIER_LETTER的枚举值MODIFIER_LETTER

assertEquals(Character.MODIFIER_LETTER, Character.getType('\u02b0'));

Unicode字符' \u020b '表示修饰符小H

2.5。 OTHER_LETTER

OTHER_LETTER常规类别类型表示表意文字或单写字母的字母。表意文字是表示一个概念或概念的图形符号,与任何特定语言无关。

单写字母的字母只有一种情况。例如,希伯来语是单写书写系统。

让我们看一个希伯来字母Alef' א '的示例,当我们将其传递给CharactergetType方法时,它返回值5,该值等于OTHER_LETTER的枚举值:

assertEquals(Character.OTHER_LETTER, Character.getType('\u05d0'));

Unicode字符' \u05d0 '表示希伯来字母Alef。

2.6。 LETTER_NUMBER

最后, LETTER_NUMBER类别与由字母或类似字母的符号组成的数字相关联。

例如,罗马数字属于LETTER_NUMBER常规类别。当我们使用罗马数字5“Ⅴ”调用CharactergetType方法时,它将返回值10,该值等于枚举LETTER_NUMBER值:

assertEquals(Character.LETTER_NUMBER, Character.getType('\u2164'));

Unicode字符' \u2164 '代表罗马数字5。

接下来,让我们看一下CharacterisAlphabetic方法。

3. Character isAlphabetic

首先,让我们看一下isAlphabetic方法的签名:

public static boolean isAlphabetic(int codePoint)

这将Unicode代码点作为输入参数,如果指定的Unicode代码点为字母,则返回true否则返回false

如果字符的常规类别类型为以下任意一种,则该字符为字母:

  • UPPERCASE_LETTER
  • LOWERCASE_LETTER
  • TITLECASE_LETTER
  • MODIFIER_LETTER
  • OTHER_LETTER
  • LETTER_NUMBER

此外,如果字符具有Other_Alphabetic属性Other_Alphabetic ,则该字符为字母 如Unicode标准所定义。

让我们看一些字母字符的例子:

assertTrue(Character.isAlphabetic('A'));

 assertTrue(Character.isAlphabetic('\u01f2'));

在以上示例中,我们将UPPERCASE_LETTER 'A'TITLECASE_LETTER '\u01f2'传递给isAlphabetic方法,该拉丁字母表示拉丁大写字母' D ',后跟带有小写字母的小写字母' Z ',并且返回true。

4. Character isLetter

Java的Character类提供了isLetter()方法来确定指定字符是否为字母。让我们看一下方法签名:

public static boolean isLetter(char ch)

它以字符作为输入参数,如果指定的字符是字母,则返回true否则返回false

如果CharactergetType方法提供的Character常规类别类型为以下任意一种,则认为该字符为字母:

  • UPPERCASE_LETTER
  • LOWERCASE_LETTER
  • TITLECASE_LETTER
  • MODIFIER_LETTER
  • OTHER_LETTER

但是,此方法不能处理补充字符。为了处理所有Unicode字符(包括补充字符),Java的Character类提供了isLetter()方法的重载版本:

public static boolean isLetter(int codePoint)

此方法可以处理所有Unicode字符,因为它将Unicode代码点作为输入参数。此外,如果指定的Unicode代码点是我们前面定义的字母,则返回true

让我们看几个字母字符的例子:

assertTrue(Character.isAlphabetic('a'));

 assertTrue(Character.isAlphabetic('\u02b0'));

在上面的示例中,我们将LOWERCASE_LETTER 'a'MODIFIER_LETTER '\u02b0'输入到isLetter方法中,它们代表修饰符小H ,并返回true。

5.比较和对比

最后,我们可以看到所有字母都是字母字符,但并非所有字母字符都是字母

换句话说,如果字符是字母或具有常规类别LETTER_NUMBER ,则isAlphabetic方法返回true 。此外,如果字符具有Unicode标准定义的Other_Alphabetic属性,则它也返回true

首先,让我们看一个既是字母又是字母的字符示例-字符' a ':

assertTrue(Character.isLetter('a'));

 assertTrue(Character.isAlphabetic('a'));

当字符' a '作为输入参数传递给isLetter()isAlphabetic()方法时,将返回true

接下来,让我们看一个字母字符而不是字母的示例。在这种情况下,我们将使用Unicode字符' \u2164 ',它代表罗马数字5:

assertFalse(Character.isLetter('\u2164'));

 assertTrue(Character.isAlphabetic('\u2164'));

传递给isLetter()方法的Unicode字符' \u2164 '返回false。另一方面,当传递给isAlphabetic()方法时,它返回true

当然,对于英语来说,区别没有区别。由于所有英语字母都属于字母类别。另一方面,其他语言中的某些字符可能会有区别。

六,结论

在本文中,我们了解了Unicode代码点的不同常规类别。此外,我们介绍了isAlphabetic()isLetter()方法之间的isAlphabetic()

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *