Maison  >  Article  >  Java  >  Pourquoi devrais-je échapper au caractère pipe dans la méthode String.split de Java ?

Pourquoi devrais-je échapper au caractère pipe dans la méthode String.split de Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-06 06:28:02636parcourir

Why Should I Escape the Pipe Character in Java's String.split Method?

Échapper aux délimiteurs de tuyaux dans String.split

Lorsque vous utilisez la méthode split sur une chaîne, il est important de comprendre l'importance d'échapper certains caractères . En particulier, le caractère pipe (|) agit comme un délimiteur spécial, et sa présence sans s'échapper peut conduire à des résultats inattendus.

Pourquoi échapper à la pipe ?

Le La méthode split attend un argument d'expression régulière, où chaque caractère représente une règle de correspondance de modèle spécifique. Lorsqu'un canal sans échappement est utilisé, il est interprété comme un opérateur OU logique dans l'expression régulière. Cela signifie qu'il représente un modèle qui correspond soit à une chaîne vide, soit à une autre chaîne vide, ce qui n'est pas le comportement prévu.

Exemple

Considérez l'extrait de code suivant : qui tente d'analyser une ligne avec des valeurs délimitées par des barres verticales :

private ArrayList<String> parseLine(String line) {
    ArrayList<String> list = new ArrayList<String>();
    String[] list_str = line.split("|");
    for(String s:list_str) {
        list.add(s);
        System.out.print(s+ "|");
    }
    return list;
}

Sans échapper à la barre verticale, ce code correspondra de manière incorrecte à chaque caractère de la chaîne en tant que délimiteur, ce qui entraînera un tableau vide.

Solution : Échapper au tuyau

Pour garantir que le tuyau est reconnu comme un délimiteur littéral, il doit être échappé à l'aide du caractère barre oblique inverse. Cela indique à la méthode split que le tube doit être traité comme un caractère plutôt que comme un opérateur regex :

private ArrayList<String> parseLine(String line) {
    ArrayList<String> list = new ArrayList<String>();
    String[] list_str = line.split("\|");
    for(String s:list_str) {
        list.add(s);
        System.out.print(s+ "|");
    }
    return list;
}

En échappant le tube en utilisant "|", la méthode split sépare désormais correctement les valeurs dans la ligne .

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