У меня есть файл CSV (который я не создавал, и я не могу изменить сейчас и не смогу его изменить), который содержит следующие строки:Разделение строки на запятую, когда данные могут содержать запятые
"Surname, Firstname", yes, no, somestring, whatever, etc
Как вы можете видеть здесь, первый ,
не запятая, на котором я хотел бы разделить строку. Обратите внимание, что эта конкретная запятая заключена в кавычки.
Из-за этого, просто string.split(',')
, очевидно, не будет работать, так как это даст мне массив длины 7 для указанных выше строк вместо 6.
Есть ли способ обойти это? Я думал об использовании регулярного выражения, чтобы разделить строку, но я недостаточно компетентен в регулярном выражении, чтобы подумать о шаблоне, который будет разделяться только на запятые, которые не заключены внутри кавычек.
Я могу придумать уродливые, хакерские способы сделать это, прочитав каждый символ строки char, но это должно быть последним средством, поскольку я уверен, что есть лучший способ сделать это!
Это выглядит как .csv из Excel. Всегда весело. Больше удовольствия, когда данные содержат цитаты и запятые ... –
Это не на самом деле из Excel, но да, весело! :) Это из местоположения в сети, моя программа читает файл и пытается его разобрать. – AndrewC
Чтение одного персонажа за раз не обязательно является уродливым взломом. Я бы рекомендовал найти C# CSV-парсер, так как я уверен, что такие вещи уже существуют. –