Тож я знаю про String#codePointAt(int)
, але він індексується char
зміщенням, а не зміщенням кодової точки.
Я думаю про спробувати щось на кшталт:
- використовуючи
String#charAt(int)
для отриманняchar
індексу - тестування, чи
char
знаходиться в діапазоні високих сурогатів- якщо так, використовуйте
String#codePointAt(int)
для отримання кодової точки та збільшення індексу на 2 - якщо ні, використовуйте задане
char
значення як кодову точку та збільшуйте індекс на 1
- якщо так, використовуйте
Але мої побоювання є
- Я не впевнений, чи кодові точки, які, природно, в діапазоні сурогатів, зберігатимуться як два
char
значення або одне - це здається жахливим дорогим способом перегляду символів
- хтось, мабуть, придумав щось краще.