for(String s : result){ System.out.println(">"+s+"<"); } }
выводит:
>< >A< >|< >B< >|< >C< >|< >|< >D<
Это далеко от того, что я бы ожидал:
>A< >B< >C< >< >D<
Почему это происходит?
Переведено автоматически
Ответ 1
Вам нужно
test.split("\\|");
split использует регулярное выражение и в регулярном выражении| является метасимволом, представляющим OR оператор. Вам нужно экранировать этот символ с помощью \ (записывается в String как "\\" поскольку \ также является метасимволом в строковых литералах, и для экранирования требуется другой \).
Вы также можете использовать
test.split(Pattern.quote("|"));
и давайте Pattern.quote создадим экранированную версию регулярного выражения, представляющего |.