2015-12-05 5 views
0

Мне нужно разбить строку на подстроки на основе деминера. Вот код:Разделить строку на основе данного разделителя, игнорируя двойную quted часть

String[] fields = line.split(Pattern.quote(CSV_DELIMITER)); //CSV_DELIMITER="," 

Я получаю следующую строку "1234, "DFD ДДС", 35345" expectection был в том, что результат будет иметь 3 поля: 1234, "DFD ДДС", 35345, но у него есть 4: 1234, dfd, ddss, 35345 Как я могу это решить? (Содержание в двойных кавычках не должно быть разделено)

ответ

0

Используйте CSVParser из Apache Commons.

Он может обрабатывать поля, содержащие разделитель (и многое другое):

https://commons.apache.org/proper/commons-csv/

CSVFormat.withDelimiter(',').withQuote('"') 

CSVFormat.EXCEL будет ярлык для:

CSVFormat 
.withDelimiter(',') 
.withQuote('"') 
.withRecordSeparator("\r\n") 
.withIgnoreEmptyLines(false) 
.withAllowMissingColumnNames(true) 
Смежные вопросы