La méthode Java split(), lorsqu'elle est utilisée pour diviser une chaîne par le tuyau symbole ("|"), peut donner des résultats inattendus, comme le montre l'exemple suivant :
public static void main(String[] args) { String test = "A|B|C||D"; String[] result = test.split("|"); for (String s : result) { System.out.println(">"+s+"<"); } }
Au lieu du résultat prévu sortie :
>A< >B< >C< >< >D<
le code produit :
>< >A< >| >B< >| >C< >| >| >D<
Pourquoi cela se produit-il ?
Le problème réside dans la syntaxe de la méthode split(). Le symbole barre verticale, « | », revêt une importance particulière dans les expressions régulières, où il représente l'opérateur « OU ». Pour utiliser le symbole de la barre verticale comme délimiteur, il faut l'échapper à l'aide d'une barre oblique inverse ().
Pour modifier le code, on peut utiliser les approches suivantes :
// Option 1: Escaping the pipe symbol String[] result = test.split("\|");
// Option 2: Utilizing Pattern.quote() import java.util.regex.Pattern; String[] result = test.split(Pattern.quote("|"));
En échappant au symbole pipe, vous supprimez son statut spécial dans les expressions régulières, lui permettant d'être interprété comme un délimiteur littéral.
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!