Рубрики
Без рубрики

Символ#isAlphabetic против Персонаж#островок

Поймите разницу между методами isAlphabetic() и is Better() класса символов Java.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы начнем с краткого рассмотрения некоторых общих типов категорий для каждой определенной кодовой точки Юникода или диапазона символов, чтобы понять разницу между буквами и буквенными символами .

Далее, мы рассмотрим isAlphabetic() и is Better() методы символьного класса в Java. Наконец, мы рассмотрим сходства и различия между этими методами.

2. Общие типы категорий символов Юникода

Набор символов Unicode (UCS) содержит 1 114 112 кодовых точек: U+0000—U+10FFFF. Символы и диапазоны кодовых точек сгруппированы по категориям.

Класс Character предоставляет две перегруженные версии метода GetType () , который возвращает значение, указывающее общий тип категории символа .

Давайте посмотрим на сигнатуру первого метода:

public static int getType(char ch)

Этот метод не может обрабатывать дополнительные символы. Для обработки всех символов Юникода, включая дополнительные символы, класс Java Character предоставляет перегруженный метод GetType , который имеет следующую сигнатуру:

public static int getType(int codePoint)

Далее давайте рассмотрим некоторые общие типы категорий.

2.1. UPPERCASE_LETTER

Тип UPPERCASE_LETTER общая категория представляет собой заглавные буквы.

Когда мы вызываем метод Character # |/GetType на букву верхнего регистра, например, ‘ U ‘, метод возвращает значение 1, которое эквивалентно значению перечисления UPPERCASE_LETTER :

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

2.2. LOWERCASE_LETTER

Тип категории LOWERCASE_LETTER general связан со строчными буквами.

При вызове метода Character # |/GetType на строчной букве, например, ‘ u ‘, метод вернет значение 2, которое совпадает со значением перечисления LOWERCASE_LETTER :

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

2.3. TITLECASE_LETTER

Далее, категория TITLECASE_LETTER general представляет символы регистра заголовка.

Некоторые символы выглядят как пары латинских букв. Когда мы вызываем метод Character # |/GetType для таких символов Юникода, это вернет значение 3, которое равно значению TITLECASE_LETTER enum:

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

Здесь символ Юникода ” \u01f2 “представляет собой латинскую заглавную букву” D “, за которой следует маленькая ” Z ” с углеродом.

2.4. MODIFIER_LETTER

Буква модификатора в стандарте Unicode-это “буква или символ, обычно написанные рядом с другой буквой, которую он каким-либо образом изменяет”.

Тип MODIFIER_LETTER общая категория представляет такие буквы модификатора.

Например, буква модификатора small H , ‘ ʰ ‘ при передаче в Символ # GetType метод возвращает значение 4, которое совпадает со значением перечисления MODIFIER_LETTER :

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

Символ Юникода ‘ \u020b ‘ представляет букву модификатора small H .

2.5. OTHER_LETTER

Тип категории OTHER_LETTER general представляет собой идеографию или букву в алфавите с одним регистром. Идеограмма-это графический символ, представляющий идею или концепцию, независимую от какого-либо конкретного языка.

В алфавите с одним регистром букв есть только один регистр. Например, иврит-это система письма в одном регистре.

Давайте рассмотрим пример еврейской буквы Alef, ‘ א ‘, когда мы передаем ее в метод Character # GetType , он возвращает значение 5, которое равно значению перечисления OTHER_LETTER :

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

Символ Юникода ‘ \u05d0 ‘ представляет еврейскую букву Алеф.

2.6. LETTER_NUMBER

Наконец, категория LETTER_NUMBER связана с цифрами, состоящими из букв или буквоподобных символов.

Например, римские цифры относятся к категории LETTER_NUMBER general. Когда мы вызываем метод Character # |/GetType с римской цифрой пять, ‘Ⅴ’, он возвращает значение 10, которое равно значению enum LETTER_NUMBER :

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

Символ Юникода ” \u2164 ” представляет собой римскую цифру Пять.

Далее давайте рассмотрим метод Character # is Alphabetic .

3. Символ#isAlphabetic

Во-первых, давайте посмотрим на сигнатуру метода isAlphabetic :

public static boolean isAlphabetic(int codePoint)

Это принимает кодовую точку Юникода в качестве входного параметра и возвращает true , если указанная кодовая точка Юникода является алфавитной и false в противном случае .

Символ является алфавитным, если его общий тип категории является одним из следующих:

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

Кроме того, символ является алфавитным, если он имеет свойство Other_Alphabetic , как определено стандартом Unicode.

Давайте рассмотрим несколько примеров символов, которые являются алфавитами:

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

В приведенных выше примерах мы передаем UPPERCASE_LETTER ‘A’ и TITLECASE_LETTER ‘\u01f2’ , который представляет латинскую заглавную букву ” D “, за которой следует маленькая ” Z ” с карон в метод isAlphabetic , и он возвращает true.

4. Символ#островок

Класс Character Java предоставляет метод isLetter() для определения того, является ли указанный символ буквой. Давайте посмотрим на сигнатуру метода:

public static boolean isLetter(char ch)

Он принимает символ в качестве входного параметра и возвращает true , если указанный символ является буквой, и false в противном случае .

Символ считается буквой, если его общий тип категории, заданный методом Character # GetType , является одним из следующих:

  • UPPERCASE_LETTER
  • LOWERCASE_LETTER
  • TITLECASE_LETTER
  • MODIFIER_LETTER
  • OTHER_LETTER

Однако этот метод не может обрабатывать дополнительные символы. Для обработки всех символов Юникода, включая дополнительные символы, класс Java Character предоставляет перегруженную версию метода isLetter() :

public static boolean isLetter(int codePoint)

Этот метод может обрабатывать все символы Юникода, поскольку он принимает кодовую точку Юникода в качестве входного параметра. Кроме того, он возвращает true , если указанная кодовая точка Unicode является буквой, как мы определили ранее.

Давайте рассмотрим несколько примеров символов, которые являются буквами:

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

В приведенных выше примерах мы вводим LOWERCASE_LETTER ‘a’ и MODIFIER_LETTER ‘\u02b0’ , который представляет букву модификатора small H в метод isLetter , и он возвращает true.

5. Сравнение и контраст

Наконец, мы видим, что все буквы являются буквенными символами, но не все буквенные символы являются буквами .

Другими словами, метод isAlphabetic возвращает true , если символ является буквой или имеет общую категорию LETTER_NUMBER . Кроме того, он также возвращает true , если символ имеет свойство Other_Alphabetic , определенное стандартом Unicode.

Во — первых, давайте рассмотрим пример символа, который является буквой, а также алфавитным символом ‘ a ‘:

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

Символ ‘ a ‘, переданный обоим методам Isalphabetic () , а также isAlphabetic() в качестве входного параметра, возвращает true .

Далее давайте рассмотрим пример символа, который является алфавитом, но не буквой. В этом случае мы будем использовать символ Юникода ‘ \u2164 ‘, который представляет собой римскую цифру Пять:

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

Символ Юникода ‘ \u2164 “когда перешли к Островок() метод возвращает значение false. С другой стороны, при переходе к isAlphabetic() метод, он возвращает истинный .

Конечно, для английского языка это различие не имеет никакого значения. Так как все буквы английского языка подпадают под категорию алфавитов. С другой стороны, некоторые символы в других языках могут иметь различие.

6. Заключение

В этой статье мы узнали о различных общих категориях кодовой точки Unicode. Кроме того, мы рассмотрели сходства и различия между методами isAlphabetic() и is Better () .

Как всегда, все эти примеры кода доступны на GitHub .