Ich weiß also Bescheid String#codePointAt(int), aber es wird durch den charVersatz indiziert , nicht durch den Codepunktversatz.
Ich denke darüber nach, etwas zu versuchen wie:
- Verwenden Sie
String#charAt(int), um diecharan einem Index zu erhalten - Testen, ob der
charim Bereich der hohen Surrogate liegt- Wenn ja, verwenden Sie
String#codePointAt(int), um den Codepunkt abzurufen, und erhöhen Sie den Index um 2 - Wenn nicht, verwenden Sie den angegebenen
charWert als Codepunkt und erhöhen Sie den Index um 1
- Wenn ja, verwenden Sie
Aber meine Bedenken sind
- Ich bin nicht sicher, ob Codepunkte, die sich natürlich im Bereich mit hohen Ersatzwerten befinden, als zwei
charoder als ein Wert gespeichert werden - Dies scheint eine schrecklich teure Möglichkeit zu sein, Zeichen zu durchlaufen
- jemand muss sich etwas Besseres ausgedacht haben.