2010-10-19 108 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