Ich weiß also Bescheid String#codePointAt(int)
, aber es wird durch den char
Versatz indiziert , nicht durch den Codepunktversatz.
Ich denke darüber nach, etwas zu versuchen wie:
- Verwenden Sie
String#charAt(int)
, um diechar
an einem Index zu erhalten - Testen, ob der
char
im 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
char
Wert 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
char
oder als ein Wert gespeichert werden - Dies scheint eine schrecklich teure Möglichkeit zu sein, Zeichen zu durchlaufen
- jemand muss sich etwas Besseres ausgedacht haben.