Как на Java распарсить строку?
Имеется строка вида: яяяя,ччччч,"цццццц, ццццццццц",ввввввв
Мой код:
String[] array = myList.get(13).split(",");
Arrays.stream(array).forEach(System.out::println);
в результате выдает массив с элементами через все запятые.
Вопрос - как часть строки в кавычках сделать одним элементом
Ответы (1 шт):
Автор решения: Alex Rudenko
→ Ссылка
Регулярное выражение для split: str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"):
System.out.println("split");
String str = "яяяя,ччччч,\"цццццц, ццццццццц\",,ввввввв";
Arrays.stream(str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"))
.forEach(System.out::println);
Регулярное выражение для match:
System.out.println("----\nmatch");
Pattern csv = Pattern.compile("\"[^\"]*\"|[^,]+|(?=,)(?<=,)");
csv.matcher(str)
.results()
.map(MatchResult::group)
.forEach(System.out::println);
Результаты:
split
яяяя
ччччч
"цццццц, ццццццццц"
ввввввв
----
match
яяяя
ччччч
"цццццц, ццццццццц"
ввввввв