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
')调用Character
# getType
方法时,该方法返回值1,该值等于UPPERCASE_LETTER
枚举值:
assertEquals(Character.UPPERCASE_LETTER, Character.getType('U'));
2.2。 LOWERCASE_LETTER
LOWERCASE_LETTER
常规类别类型与小写字母关联。
在小写字母(例如' u
')上调用Character
# getType
方法时,该方法将返回值2,该值与LOWERCASE_LETTER
的枚举值相同:
assertEquals(Character.LOWERCASE_LETTER, Character.getType('u'));
2.3。 TITLECASE_LETTER
接下来, TITLECASE_LETTER
常规类别表示标题大小写字符。
有些字符看起来像成对的拉丁字母。当我们在此类Unicode字符上调用Character
# getType
方法时,它将返回值3,该值等于TITLECASE_LETTER
枚举值:
assertEquals(Character.TITLECASE_LETTER, Character.getType('\u01f2'));
此处,Unicode字符' \u01f2
'表示拉丁大写字母' D
',后跟\u01f2
的小写字母' Z
'。
2.4。 MODIFIER_LETTER
Unicode标准中的修饰词是“通常以某种方式修饰的另一个字母旁边写的字母或符号”。
MODIFIER_LETTER
常规类别类型表示此类修饰语字母。
例如,修饰语小H
,' ʰ
',当传递给Character
# getType
方法时,返回值4,该值与MODIFIER_LETTER
的枚举值MODIFIER_LETTER
:
assertEquals(Character.MODIFIER_LETTER, Character.getType('\u02b0'));
Unicode字符' \u020b
'表示修饰符小H
2.5。 OTHER_LETTER
OTHER_LETTER
常规类别类型表示表意文字或单写字母的字母。表意文字是表示一个概念或概念的图形符号,与任何特定语言无关。
单写字母的字母只有一种情况。例如,希伯来语是单写书写系统。
让我们看一个希伯来字母Alef' א
'的示例,当我们将其传递给Character
# getType
方法时,它返回值5,该值等于OTHER_LETTER
的枚举值:
assertEquals(Character.OTHER_LETTER, Character.getType('\u05d0'));
Unicode字符' \u05d0
'表示希伯来字母Alef。
2.6。 LETTER_NUMBER
最后, LETTER_NUMBER
类别与由字母或类似字母的符号组成的数字相关联。
例如,罗马数字属于LETTER_NUMBER
常规类别。当我们使用罗马数字5“Ⅴ”调用Character
# getType
方法时,它将返回值10,该值等于枚举LETTER_NUMBER
值:
assertEquals(Character.LETTER_NUMBER, Character.getType('\u2164'));
Unicode字符' \u2164
'代表罗马数字5。
接下来,让我们看一下Character
# isAlphabetic
方法。
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
。
如果Character
# getType
方法提供的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 评论