Maison > Java > javaDidacticiel > Pourquoi Java 8 a-t-il modifié le comportement de « String.split() » et comment puis-je maintenir la compatibilité ?

Pourquoi Java 8 a-t-il modifié le comportement de « String.split() » et comment puis-je maintenir la compatibilité ?

Susan Sarandon
Libérer: 2024-12-21 02:29:13
original
585 Les gens l'ont consulté

Why Did Java 8 Change the Behavior of `String.split()`, and How Can I Maintain Compatibility?

Dévoilement de la divergence de division dans Java 8

Contexte :
Avant Java 8, la chaîne. La méthode split inclurait systématiquement les chaînes vides de début et de fin dans son tableau de résultats. Cependant, ce comportement a changé dans Java 8. Cet article examine les raisons de ce changement et propose des stratégies pour maintenir la compatibilité entre les versions de Java.

Changement de modèle dans Java 8 :
Java 8 a introduit une modification à la documentation de String.split et Pattern.split. Une nouvelle clause a été ajoutée, indiquant qu'une sous-chaîne vide en début de chaîne ne serait incluse dans le tableau de résultats que s'il existe une correspondance de largeur positive au début de la séquence d'entrée. En revanche, une correspondance de largeur nulle au début de l'entrée ne produirait pas de sous-chaîne vide en début de chaîne.

Comparaison de code :
Comparaison du code d'implémentation de référence pour Pattern .split dans Java 7 et Java 8 révèle l'introduction d'une instruction conditionnelle dans Java 8. Cette instruction vérifie si la correspondance au début de la séquence d'entrée a une largeur nulle et si c'est le cas, l'exclut du résultat.

// Code added in Java 8
if (index == 0 && index == m.start() && m.start() == m.end()) {
  // no empty leading substring included for zero-width match
  // at the beginning of the input char sequence.
  continue;
}
Copier après la connexion

Préserver la compatibilité :
Pour maintenir la cohérence entre les versions de Java et conserver le comportement de Java 8, les utilisateurs peuvent suivre les étapes suivantes :

  • Si l'expression régulière peut correspondre à des chaînes de longueur nulle, entourez-la de parenthèses non capturantes et ajoutez (?!A) au end.
  • Si l'expression régulière ne peut pas correspondre à des chaînes de longueur nulle, aucune action n'est nécessaire.
  • Si l'on ne sait pas si l'expression régulière peut correspondre à des chaînes de longueur nulle, combinez les étapes 1 et 2.

En suivant ces directives, les développeurs peuvent garantir que le comportement de String.split reste cohérent et prévisible dans toutes les versions de Java.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal