Quindi lo so String#codePointAt(int)
, ma è indicizzato char
dall'offset, non dall'offset del punto di codice.
Sto pensando di provare qualcosa come:
- utilizzando
String#charAt(int)
per ottenerechar
un indice - verificare se
char
è nella gamma di surrogati alti- in tal caso, utilizzare
String#codePointAt(int)
per ottenere il punto di codice e incrementare l'indice di 2 - in caso contrario, usa il
char
valore dato come codepoint e incrementa l'indice di 1
- in tal caso, utilizzare
Ma le mie preoccupazioni lo sono
- Non sono sicuro se i punti di codice che sono naturalmente nell'intervallo di surrogati alti verranno memorizzati come due
char
valori o uno - questo sembra un modo terribilmente costoso per scorrere i personaggi
- qualcuno deve aver escogitato qualcosa di meglio.