Correction de la suppression des valeurs vides dans le fractionnement de chaînes Java
Lors de l'utilisation de la méthode split() sur une chaîne Java, vous pouvez rencontrer un résultat inattendu où les valeurs vides sont supprimées du tableau résultant. Cela peut être vu dans l'exemple suivant :
String data = "5|6|7||8|9||"; String[] split = data.split("\|"); System.out.println(split.length);
Dans ce cas, vous vous attendez à obtenir un tableau de 8 valeurs : [5, 6, 7, EMPTY, 8, 9, EMPTY, EMPTY] . Cependant, seules 6 valeurs sont renvoyées.
La raison de ce comportement est que la méthode split() supprime par défaut les chaînes vides de fin du tableau de résultats. Pour désactiver ce comportement et inclure des valeurs vides, vous pouvez utiliser la version surchargée de split() :
String[] split = data.split("\|", -1);
En définissant le paramètre limit sur une valeur négative (-1 dans ce cas), vous instruisez la méthode pour appliquer le modèle autant de fois que possible et inclure toutes les chaînes vides de fin.
Cela est possible car split(regex) appelle en interne split(regex, 0), qui supprime les chaînes vides de fin. En fournissant une limite négative, vous désactivez efficacement ce comportement et forcez la méthode à conserver toutes les valeurs, y compris les valeurs vides.
Exception :
Il est important de noter que la suppression les chaînes vides de fin n'ont de sens que si elles ont été créées par le processus de division. Pour une chaîne vide, puisqu'elle ne peut pas être divisée davantage, sa division entraînera un tableau avec une seule valeur de chaîne vide. En effet, split() n'a effectué aucun fractionnement réel, donc la chaîne vide représente l'entrée d'origine, pas une chaîne vide générée par l'opération de fractionnement.
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!