我正在尝试解析一个文件,该文件的每一行都有竖线分隔值。当我没有在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()
方法需要对管道字符进行转义吗?
发布于 2012-03-22 00:23:11
String.split
需要正则表达式参数。未转义的|
被解析为正则表达式,意思是“空字符串或空字符串”,这不是您想要的意思。
发布于 2012-03-22 00:22:37
因为split参数的语法是正则表达式,其中在'|'
中有OR的特殊含义,而'\|'
表示文字'|'
,因此字符串"\\|"
表示正则表达式'\|'
,这意味着精确匹配字符'|'
。
发布于 2015-12-07 18:53:28
您可以简单地执行以下操作:
String[] arrayString = yourString.split("\\|");
https://stackoverflow.com/questions/9808689
复制相似问题