Код Senior Реализация с нуля обновлено
Разбор и сборка CSV
Условие
parseCSV(text) → массив массивов. Поддержи поля в кавычках с запятыми, переводами строк и удвоенными кавычками внутри. toCSV(rows) собирает обратно, экранируя что нужно.
Что проверяют тесты
простой разбор
запятая внутри кавычек
удвоенные кавычки
перевод строки внутри поля
перевод строки CRLF
пустые поля
сборка экранирует
туда и обратно
Как подойти
Задача учит различать «формат выглядит просто» и «формат простой». split(',') ломается на первой же запятой внутри кавычек, а split('\n') - на многострочном поле. Единственный рабочий подход - конечный автомат из двух состояний. То же относится к разбору любого формата с экранированием.
Подсказки: 3
- Разбор посимвольный с флагом «внутри кавычек» - split здесь не работает.
- Удвоенная кавычка внутри поля означает одну кавычку, а не конец поля.
- Перевод строки внутри кавычек не начинает новую строку.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.