Wozu ist die Methode offsetByCodePoints(int, int) beim StringBuilder sinnvoll?

Geek

Mitglied
Mir ist der Nutzen der Methode offsetByCodePoints(int, int) beim StingBuilder nicht ganz klar,
im Grunde kann ich damit ab einem bestimmten Offset, also ab einem bestimmten Index n Elemente weiter den dortigen Index zurückgeben.

Aber:
Java:
StringBuilder sb = new StringBuilder("Hallo Welt!");
int i = 2;
int k = 5;
char c = sb.charAt(sb.offsetByCodePoints(i, k));

ist also das gleiche wie:

Java:
StringBuilder sb = new StringBuilder("Hallo Welt!");
int i = 2;
int k = 5;
char c = sb.charAt(i+k);

Wozu sollte man die Methode offsetByCodePoints(int, int) also benötigen?
Ich würde mal sagen, ab welchem Index man etwas aus sb extrahieren möchte, ist einem doch klar. Wieso sollte man da mit Offsets umgehen und wenn man damit umgehen wollte, dann reichen dafür ja auch zwei Int Variablen, die dann entsprechend addiert werden.
int i wäre z.b. der Offset und int k könnte der Wert sein, der bestimmt, wieviele Elemente weiter vom Offset her, es weitergehen soll.
Daher i+k.

Warum gibt es diese Methode in erster Linie überhaupt?
Die Java Entwickler müssen sich ja sicher irgendwas eingefallen lassen haben, wenn sie diese schon einbauten.
Gibt es für diese Methode also irgendeinen sinnvollen Anwendungsfall, der so wichtig war, dass die Java Entwickler diese Methode eingeführt haben?
 
Nicht alle CodePoints sind mit Java's Standard encoding (UTF-16) darstellbar. Darum werden zwei chars zu einem CodePoint zusammengefasst (Surrogates) und das wiederum muss behandelt werden. Nachdem du dich in einem Bereich aufhälst indem du keine zwei chars als einen CodePoint brauchst, liefern die beiden Methoden das selbe Ergebnis.
 

Zurück
Oben