Estou tentando analisar um arquivo que tem cada linha com valores delimitados por canal. Ele não funcionou corretamente quando eu não escapei do delimitador de tubos no método de divisão, mas funcionou corretamente depois que eu escapei do tubo, como abaixo.
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;
}
Alguém pode explicar por que o caractere de pipe precisa ser escapado para o split()
método?
Pattern.quote
String
e retorna um regexString
que corresponderá à entrada (ou seja, ele cuida de todos os escapes para você).