Ошибка в выводе при использовании метода split ()? - PullRequest
4 голосов
/ 20 февраля 2012

Я пытаюсь использовать простой метод split (), но вывод, который я получаю, неверен. Я использую этот код:

        question = newobject.ACTIVITY_LIST_OF_QUESTIONS.split("|");

, где newobject.ACTIVITY_LIST_OF_QUESTIONS содержит 1 | 2 | 8 |11 | 4 | 5 | 6 | 14 | 15 | 16 | 13 | 17 | 7 | 9 | 12 | 10 в виде строки, поэтому я должен получать каждое число в индексе массива.

Но вместо этого яполучаю вывод-

       1
       |
       2
       |
       8

Пожалуйста, помогите Если у кого-то была такая же проблема?

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

Вы должны использовать split("\\|"). Вам нужно нарушить особое значение регулярное выражение |. Вы делаете это с \\|. [Обратите внимание, что split() делится в соответствии с регулярным выражением].

String s = "1|2|8|11|4|5|6|14|15|16|13|17|7|9|12|10";
String[] arr = s.split("\\|");
System.out.println(Arrays.toString(arr));

Результат:

[1, 2, 8, 11, 4, 5, 6, 14, 15, 16, 13, 17, 7, 9, 12, 10]
1 голос
/ 20 февраля 2012

A | - метасимвол регулярного выражения, используемый для обозначения изменения. Чтобы обозначить литерал |, вам нужно экранировать его как \\| или поместить его в класс символов [|].

1 голос
/ 20 февраля 2012

Вам нужно сбежать | как \\|.Ваше регулярное выражение интерпретируется как «пустая строка or пустая строка», поэтому каждая позиция соответствует.

...