奇怪的字符串拆分行为

Tse*_*eng 3 string android 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("|");
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是在line.split("|");colums包含15个元素而不是预期之后6.仔细查看它的内容会发现字符串中的每个字符都存储在一个数组元素中.

任何有想法的人,有什么问题吗?来自服务器的代码不以任何方式编码在示例中我只使用ASCII字符出现.

Cam*_*ner 6

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

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