In Unicode (UTF-16) wird ein Zeichen normalerweise durch zwei Bytes dargestellt. Mit zunehmender Anzahl von Zeichen, die von Unicode verarbeitet werden sollen, wurde jedoch die Anzahl der Zeichen, die durch 2 Bytes (65535 Zeichen) dargestellt werden können, unzureichend, und durch Ausdrücken einiger Zeichen mit 4 Bytes wurde die Anzahl der Zeichen erhöht, die verarbeitet werden können. .. Solche 4-Byte-Zeichen werden Ersatzpaare genannt.
Das Zeichen "Tadel" ist ein Ersatzpaar. Wenn Sie also normalerweise die Methode "Länge" verwenden, werden zwei Zeichen berücksichtigt. Verwenden Sie daher zum korrekten Zählen von Zeichenfolgen, die Ersatzpaare enthalten, die Methode "codePointCount" anstelle der Methode "length".
var str1 = "Hallo";
System.out.println(str1.length()); //Ergebnis: 5
var str2 = "Schelten";
System.out.println(str2.length()); //Ergebnis: 3
//Dadurch wird die richtige Anzahl von Zeichen erhalten
System.out.println(str2.codePointCount(0, str2.length())); //Ergebnis: 2
codePointCount
Methode/**
@param begin Startposition, um die Länge zu ermitteln
@param end Endposition für Länge
@Anzahl der Rückgabezeichen
*/
public int codePointCount(int begin, int end)