java - Разделить строку по вертикальной черте '|' , игнорируйте запятую

Я пытаюсь разбить строку, разделенную символом вертикальной черты | вот так -

items.split("\\|",-1)

Однако, если в строке есть запятая, строка также разделяется на нее.

Как я могу этого избежать?

пример-

ввод- что-то|1234|привет, как дела

ожидаемый результат - разделить значения по

  • что-нибудь

  • 1234

  • Привет, как дела

    Фактический результат-

  • что-нибудь

  • 1234

  • Привет

  • как твои дела


person calculus    schedule 27.09.2017    source источник
comment
Он отлично работает для меня. Ошибка должна быть в другом месте, покажите нам больше кода   -  person Toto    schedule 27.09.2017
comment
<c:forEach var="items" items="${data}" varStatus="status"> <c:set var="listItem" value="${fn:split(items,'|')}" /> <c:set var="field1" value="${fn:trim(listItem[0])}" /> <c:set var="field2" value="${fn:trim(listItem[1])}" /> <c:set var="field3" value="${fn:trim(listItem[2])}" /> <c:set var="field4" value="${fn:trim(listItem[3])}" /> и вы хотите распечатать Field1: ${field1} <br> Field2: ${field2} <br> Field3 : ${field3}<br> Field4 : ${field4}<br> Где данные вроде - что-то | привет, как дела | 3456 | дурачок   -  person calculus    schedule 27.09.2017


Ответы (3)


Почему бы вам не использовать только следующее:

let input = "something|1234|hey, how are you";

input.split('|')
person Mikhail K.    schedule 27.09.2017
comment
Хм, похоже, это работает здесь: jsfiddle.net/aqn126jv. Проверьте, откуда функция разделения. Может случиться так, что кто-то пренебрег этим. - person Mikhail K.; 27.09.2017
comment
Это похоже на этот вопрос выпуск JSTL для каждой итерации из arrayList Однако , там тоже нет решения - person calculus; 27.09.2017

@Исчисление Пожалуйста, используйте c:forTokens

<c:forTokens items="$Items" delims="|" var="mySplit"> <c:out value="${mySplit}"/></br> </c:forTokens>

person Deedar Ali Brohi    schedule 28.09.2017
comment
Спасибо за информацию. Однако я хотел бы использовать значение разделения в виде массива, так как я буду назначать значения разделения внутри цикла. как и в foreach, я могу использовать items[0], items[1] и так далее, чтобы получить разные элементы в списке и назначить их переменным внутри цикла. Думаю, в forTokens мы можем просто распечатать список как есть. Есть ли способ получить доступ к каждому элементу в этом списке? - person calculus; 28.09.2017
comment
да, вы можете получить доступ к каждому значению использования списка вместо итератора - person Deedar Ali Brohi; 29.09.2017

Согласен с Михаилом, надо перезаписать в другом месте.

var item = "something|1234|hey, how are you"
item.split("|");
output>> ["something", "1234", "hey, how are you"]
person bac-Celd    schedule 19.04.2018