Вам нужно использовать метод синтаксического анализа, который является более сложным, чем простое разделение на символ.
Как минимум, он должен иметь два режима: разделение и пропуск. Тогда логика будет выглядеть так:
- Начало в режиме разделения.
- Прочитать характер.
- Если в режиме пропусков и символ является цитатой, перейдите в режим разделения.
- Если в режиме разделения и символ запятой, то разделите.
- Если в режиме разделения и символ является цитатой, перейдите в режим пропусков.
- Продолжайте движение в 2, пока все символы не будут прочитаны.
Изучение методов синтаксического анализа - очень полезный инструмент, несмотря на то, что там есть много готовых парсеров. Всегда есть проблемы, требующие «просто» достаточно синтаксического анализа, чтобы потребовать, чтобы вы катили новый инструмент.
Имея это в виду, Я бы добрался до инструмента анализа синтаксиса CSV. Тогда, в некоторых случаях, регулярный анализ регулярных выражений может быть хорошим выбором. Наконец, рекомендуется использовать собственный парсер, но если да, прочитайте на дискретных конечных автоматах.
Если вы изучите DFA, те, кто не понимает математику позади нее, будут удивлены тем, что ваши парсеры работают, а хорошо построенный DFA часто бывает очень быстрым.
Не используйте commaDelimitedList ... – phil652
Разбор CSV-файлов не так прост, как вы надеетесь. Используйте библиотеку CSV. Http: // StackOverflow.com/questions/200609/can-you-recommended-a-java-library-for-reading-and-possible-writing-csv-файлы –