Maison >Java >javaDidacticiel >Comment parcourir les points de code Unicode dans Java Strings ?

Comment parcourir les points de code Unicode dans Java Strings ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 14:10:02260parcourir

How do you iterate through Unicode codepoints in Java Strings?

Itérer à travers les points de code Unicode dans des chaînes Java

Introduction

Itérer à travers les points de code Unicode d'une chaîne Java nécessite un car Java utilise un codage UTF-16. Cet article explore différentes stratégies et répond aux préoccupations concernant l'encodage des caractères en dehors du plan multilingue de base (BMP).

Approche du problème

Dans un premier temps, on pourrait envisager d'utiliser String #codePointAt(int) indexé par décalage de caractères. Cependant, cette approche présente deux problèmes : elle n'est pas indexée par décalage de point de code et la gestion des points de code en dehors du BMP pose des problèmes.

Une approche alternative consiste à utiliser String#charAt(int) pour obtenir des caractères et tester leur appartenance au BMP. gamme de substituts élevée. Bien que cette méthode permette de déterminer si un point de code est en dehors du BMP, elle présente les inconvénients suivants :

  • Incertitude quant à la représentation des points de code de la plage BMP
  • Coût de calcul élevé

La solution optimale

Heureusement, Java fournit la manière canonique d'itérer sur les points de code en utilisant String#codePointAt(int):

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

   // do something with the codepoint

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

Résoudre les problèmes

  • Java utilise en effet un codage UTF-16, stockant les caractères en dehors du BMP comme substituts.
  • Le code fourni ci-dessus gère le BMP -range les points de code correctement.
  • L'augmentation du décalage de Character.charCount(codepoint) permet de naviguer correctement dans les paires de substitution.

Conclusion

Pour résumer , parcourir les points de code Unicode dans Java Strings nécessite une compréhension plus approfondie de l'encodage sous-jacent. Cependant, l'utilisation de l'approche canonique décrite dans cet article fournit une solution correcte et efficace à ce besoin commun.

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