Sto provando ad analizzare un file che ha ciascuna linea con valori delimitati da tubo. Non ha funzionato correttamente quando non ho scappato il delimitatore del tubo nel metodo split, ma ha funzionato correttamente dopo che fuggo la pipa come sotto.Perché String.split necessita del delimitatore di pipe per essere sfuggito?
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;
}
Qualcuno può spiegare perché il carattere pipe deve essere sfuggito per il metodo split()
?
Le risposte sotto risposto il "perché", ma appena cronaca, se si sta cercando di abbinare una stringa letterale si potrebbe anche guardare [Pattern.quote] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String)). Ci vuole un 'String' e restituisce una espressione regolare' String' che corrisponda all'input (cioè, si prende cura di tutte le operazioni di escape per te). – yshavit
+1 per 'Pattern.quote' – redDevil