Estoy tratando de analizar un archivo que tiene cada línea con valores delimitados por tuberías. No funcionó correctamente cuando no escapé del delimitador de tubería en el método de división, pero funcionó correctamente después de escapar de la tubería como se muestra a continuación.
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;
}
¿Alguien puede explicar por qué el carácter de la tubería debe escaparse para el split()
método?
Pattern.quote
String
y devuelve una expresión regularString
que coincidirá con la entrada (es decir, se encarga de todo el escape por usted).