Странное поведение разделения строк - PullRequest
3 голосов
/ 20 октября 2010

Я запрашиваю данные с моего сервера и получаю строку в виде 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("|"); столбцы содержат 15 элементов вместо ожидаемых 6. При более внимательном рассмотрении его содержимого обнаруживаетсячто каждый символ в строке был сохранен в одном элементе массива.

У кого-нибудь есть идея, что с ней?Код, поступающий с сервера, никак не закодирован, в примере, в котором я использую только символы ASCII.

1 Ответ

6 голосов
/ 20 октября 2010

String.split принимает регулярное выражение в качестве строки разбиения, а '|' символ означает ИЛИ в регулярном выражении земли. Вам нужно убежать от этого персонажа, например line.split("\\|");

Обратите внимание на двойную обратную косую черту: вам нужно экранировать обратную косую черту для компилятора Java, чтобы движок регулярных выражений получал буквальную обратную косую черту, за которой следует '|', которая затем интерпретируется механизмом как литерал '|'. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...