為什么String.split需要管道分隔符進(jìn)行轉(zhuǎn)義?我試圖解析具有管道分隔值的每一行的文件。當(dāng)我沒有在split方法中轉(zhuǎn)義管道分隔符時(shí),它無法正常工作,但是在我如下所示轉(zhuǎn)義管道后它正常工作。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()方法轉(zhuǎn)義?
3 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
String.split
期望一個(gè)正則表達(dá)式參數(shù)。未轉(zhuǎn)義|
的解析為正則表達(dá)式,意思是“空字符串或空字符串”,這不是你的意思。

侃侃爾雅
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
因?yàn)橐?a >拆分的參數(shù)的語法是正則表達(dá)式,所以在'|'中 具有OR的特殊含義,并且'\ |' 意思是文字“|” 所以字符串“\\ |” 表示正則表達(dá)式'\ |' 這意味著完全匹配字符'|'。

當(dāng)年話下
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以這樣做:
String[] arrayString = yourString.split("\\|");
添加回答
舉報(bào)
0/150
提交
取消