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




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:आ
…