Как я могу перебирать кодовые точки Юникода строки Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу перебирать кодовые точки Юникода строки Java?

Сообщение Anonymous »

Итак, я знаю о String#codePointAt(int), но он индексируется по смещению char, а не по смещению кодовой точки.

Я подумываю попробовать что-то вроде:
  • использование String#charAt(int) для получения символа по индексу
  • проверки того, находится ли символ в диапазоне с высоким уровнем суррогатов


    если да, используйте String#codePointAt(int), чтобы получить кодовую точку, и увеличить индекс на 2.
  • если нет, используйте данное значение char в качестве кодовой точки и увеличьте индекс на 1.

Но меня беспокоит, что
  • Я не уверен, что кодовые точки, которые естественным образом присутствуют в диапазон высоких суррогатов будет храниться как два значения char или одно
  • это кажется ужасно дорогим способом перебора символов
  • должно быть, кто-то придумал что-то получше.

Вернуться в «JAVA»