Character#isAlphabetic與Character#isLetter
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()
。