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!