Получите имя блока или сценария Unicode для определенного символа (кодовой точки) в Java

Я вижу, что класс Символ имеет два вложенных перечисления:

Как мне получить соответствующий объект перечисления блока или скрипта для конкретного персонажа? Я ожидал пару методов, таких как Character.getUnicodeBlock( codePoint ) и Character.getUnicodeScript( codePoint ). Но я не вижу таких методов.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте метод перечисления of

Посмотрите на каждый класс перечисления, а не на класс Character. Вы обнаружите, что каждое перечисление предлагает метод of, которому можно передать кодовую точку .

Пример:

int codePoint = 2_309;
String text = Character.toString( codePoint );
Character.UnicodeBlock block = Character.UnicodeBlock.of( codePoint );
Character.UnicodeScript script = Character.UnicodeScript.of( codePoint );

System.out.println( "text = " + text );
System.out.println( "block = " + block );
System.out.println( "script = " + script );

текст = अ

блок = ДЕВАНАГАРИ

сценарий = ДЕВАНАГАРИ

Пример использования

Мы можем использовать метод of, чтобы найти все символы определенного сценария.

IntStream
        .rangeClosed( Character.MIN_CODE_POINT , Character.MAX_CODE_POINT )
        .filter( ( int codePoint ) -> Character.UnicodeScript.of( codePoint ) == Character.UnicodeScript.DEVANAGARI )
        .mapToObj( ( int codePoint ) -> codePoint + ":" + Character.toString( codePoint ) )
        .forEach( System.out :: println );

При запуске:

2304:ऀ
2305:ँ
2306:ं
2307:ः
2308:ऄ
2309:अ
2310:आ
…

Другие вопросы по теме