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