【发布时间】:2012-04-06 05:05:22
【问题描述】:
我正在尝试解析一个文件,该文件的每一行都带有管道分隔值。 当我没有在 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。它需要一个
String并返回一个与输入匹配的正则表达式String(即,它会为您处理所有转义)。 -
为
Pattern.quote+1