为什么String.split需要管道分隔符进行转义?

为什么String.split需要管道分隔符进行转义?

我试图解析具有管道分隔值的每一行的文件。当我没有在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()方法转义?


catspeake
浏览 599回答 3
3回答

慕妹3242003

String.split期望一个正则表达式参数。未转义|的解析为正则表达式,意思是“空字符串或空字符串”,这不是你的意思。

莫回无

因为要拆分的参数的语法是正则表达式,所以在'|'中&nbsp;具有OR的特殊含义,并且'\ |'&nbsp;意思是文字“|”&nbsp;所以字符串“\\ |”&nbsp;表示正则表达式'\ |'&nbsp;这意味着完全匹配字符'|'。

largeQ

你可以这样做:String[]&nbsp;arrayString&nbsp;=&nbsp;yourString.split("\\|");
打开App,查看更多内容
随时随地看视频慕课网APP