Eu sei String#codePointAt(int), mas é indexado pelo chardeslocamento, não pelo deslocamento do ponto de código.
Estou pensando em tentar algo como:
- usando
String#charAt(int)para obter ocharem um índice - testando se o
charestá na faixa de substitutos elevados- em caso afirmativo, use
String#codePointAt(int)para obter o ponto de código e incremente o índice em 2 - caso contrário, use o
charvalor fornecido como ponto de código e aumente o índice em 1
- em caso afirmativo, use
Mas minhas preocupações são
- Não tenho certeza se os pontos de código que estão naturalmente na faixa de substitutos elevados serão armazenados como dois
charvalores ou um - esta parece uma maneira terrivelmente cara de iterar pelos personagens
- alguém deve ter inventado algo melhor.