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 ')調用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()