Quindi lo so String#codePointAt(int), ma è indicizzato chardall'offset, non dall'offset del punto di codice.
Sto pensando di provare qualcosa come:
- utilizzando
String#charAt(int)per ottenerecharun 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
charvalore 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
charvalori o uno - questo sembra un modo terribilmente costoso per scorrere i personaggi
- qualcuno deve aver escogitato qualcosa di meglio.