Код Senior Реализация с нуля обновлено

Разбор и сборка CSV

Условие

parseCSV(text) → массив массивов. Поддержи поля в кавычках с запятыми, переводами строк и удвоенными кавычками внутри. toCSV(rows) собирает обратно, экранируя что нужно.

Что проверяют тесты

  • простой разбор

  • запятая внутри кавычек

  • удвоенные кавычки

  • перевод строки внутри поля

  • перевод строки CRLF

  • пустые поля

  • сборка экранирует

  • туда и обратно

Как подойти

Задача учит различать «формат выглядит просто» и «формат простой». split(',') ломается на первой же запятой внутри кавычек, а split('\n') - на многострочном поле. Единственный рабочий подход - конечный автомат из двух состояний. То же относится к разбору любого формата с экранированием.

Подсказки: 3
  1. Разбор посимвольный с флагом «внутри кавычек» - split здесь не работает.
  2. Удвоенная кавычка внутри поля означает одну кавычку, а не конец поля.
  3. Перевод строки внутри кавычек не начинает новую строку.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.