我想分析一個文件,每行都有管道分隔值。 當我沒有在split方法中轉義管道分隔符時它沒有正常工作,但是如下所示,我在轉義管道後正常工作。爲什麼String.split需要管道分隔符才能被轉義?
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;
}
是否有人可以解釋爲什麼管道字符需要轉義爲split()
方法?
的答案回答了「爲什麼」,但僅供參考,如果你想匹配一個字符串中,還可以看看[Pattern.quote]( http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String))。它需要一個'String'並且返回一個匹配輸入的正則表達式'String'(即,它負責所有的轉義)。 – yshavit 2012-03-21 16:43:32
+1對'Pattern.quote' – redDevil 2014-08-26 11:13:27