Maison >Java >javaDidacticiel >Comment itérer efficacement sur les points de code Unicode dans les chaînes Java ?

Comment itérer efficacement sur les points de code Unicode dans les chaînes Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 06:49:02595parcourir

How to Efficiently Iterate Over Unicode Codepoints in Java Strings?

Itération sur les points de code Unicode dans les chaînes Java

Bien que la classe String fournisse la méthode codePointAt(int) pour accéder aux points de code Unicode, son indexation repose sur les décalages de caractères plutôt que sur les décalages de points de code. Cela soulève des inquiétudes quant à la gestion des caractères dans la plage de substitution élevée et à l'efficacité de l'approche d'itération proposée utilisant l'analyse caractère par caractère.

Solution d'itération améliorée

Java La représentation interne de chaîne utilise un schéma de codage basé sur UTF-16. Les caractères en dehors du plan multilingue de base (BMP) sont codés à l'aide du schéma de maternité de substitution. Pour une itération efficace, envisagez d'utiliser l'approche canonique suivante :

<code class="java">final int length = s.length();
for (int offset = 0; offset < length; ) {
   final int codepoint = s.codePointAt(offset);

   // process the codepoint

   offset += Character.charCount(codepoint);
}</code>

Cette approche gère correctement les paires de substitution pour les caractères extérieurs au BMP. En utilisant Character.charCount(codepoint), il incrémente efficacement le décalage du nombre approprié de caractères pour chaque point de code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn