奇怪的字符串拆分行为

时间:2010-10-19 23:10:02

标签: android string split

我正在从我的服务器请求数据并收到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字符出现。

1 个答案:

答案 0 :(得分:6)

String.split将正则表达式作为拆分字符串,并使用“|”字符表示正则表达式中的OR。你需要逃避这个角色,例如line.split("\\|");

请注意双反斜杠:您需要转义Java编译器的反斜杠,以便正则表达式引擎获得一个字面反斜杠后跟一个“|”,然后由引擎将其解释为文字“|”。