我想分析一个文件,每行都有管道分隔值。 当我没有在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