2010-10-19 114 views
3

我向我的服務器請求數據並以2|bit.ly|1||1||的形式接收字符串應該是分隔符。奇怪的字符串拆分行爲

我雖然下面的代碼段應該做的工作

BufferedReader br = null; 
... 
br = new BufferedReader(new InputStreamReader(inputStream)); 
... 

String line; 
String[] columns; 
ContentValues values; 

while((line = br.readLine())!=null) { 
    columns = line.split("|"); 
    ... 
} 

line.split("|");的colums後,含有15個元素,而不是預期6.考慮仔細看看它的內容顯示,每個字符串中的字符被存儲在一個數組元素中。

任何人有想法,它有什麼問題?來自服務器的代碼沒有以任何方式編碼,只用了ASCII字符。

回答

6

String.split採用正則表達式作爲分割字符串,'|'字符是指正則表達式中的OR。你需要逃避那個角色,例如line.split("\\|");

請注意雙反斜線:您需要轉義Java編譯器的反斜線,以便正則表達式引擎獲得文字反斜槓後跟一個'|',然後由引擎將其解釋爲文字'|'。

+0

現在我覺得很蠢:P很確定它也會接受文字。謝謝! – Tseng 2010-10-19 23:45:21