Iterieren über Unicode-Codepunkte in Java-Strings
Während die String-Klasse die Methode codePointAt(int) für den Zugriff auf Unicode-Codepunkte bereitstellt, ist ihre Indizierung darauf angewiesen auf Zeichenoffsets und nicht auf Codepunktoffsets. Dies wirft Bedenken hinsichtlich der Handhabung von Zeichen innerhalb des hohen Ersatzwertbereichs und der Effizienz des vorgeschlagenen Iterationsansatzes mit zeichenweisem Scannen auf.
Verbesserte Iterationslösung
Java's Die interne String-Darstellung verwendet ein UTF-16-basiertes Codierungsschema. Zeichen außerhalb der Basic Multilingual Plane (BMP) werden mithilfe des Surrogacy-Schemas codiert. Erwägen Sie für eine effiziente Iteration die Verwendung des folgenden kanonischen Ansatzes:
final int length = s.length();
for (int offset = 0; offset Dieser Ansatz behandelt Ersatzpaare für Zeichen außerhalb des BMP korrekt. Durch die Verwendung von Character.charCount(codepoint) wird der Offset effizient um die entsprechende Anzahl von Zeichen für jeden Codepunkt erhöht.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3