J'essaie d'analyser un fichier qui a chaque ligne avec des valeurs délimitées par des tuyaux. Cela ne fonctionnait pas correctement lorsque je n'échappais pas au délimiteur de tuyau dans la méthode fractionnée, mais cela fonctionnait correctement après avoir échappé au tuyau comme ci-dessous.
private ArrayList<String> parseLine(String line) {
ArrayList<String> list = new ArrayList<String>();
String[] list_str = line.split("\\|"); // note the escape "\\" here
System.out.println(list_str.length);
System.out.println(line);
for(String s:list_str) {
list.add(s);
System.out.print(s+ "|");
}
return list;
}
Quelqu'un peut-il expliquer pourquoi le caractère pipe doit être échappé pour la split()
méthode?
Pattern.quote
String
et retourne une expression régulièreString
qui correspondra à l'entrée (c'est-à-dire qu'il s'occupe de tous les échappements pour vous).