У меня есть AC # CSV parser, который работал очень хорошо в течение нескольких месяцев.Он использует FileHelpers.CsvEngine для выполнения тяжелой работы.Моя система должна получать сторонние CSV-файлы как есть (очень трудно вернуться к поставщикам и сказать «измени их»).После нескольких месяцев успешного анализа CSV я столкнулся с несколькими большими файлами, в которых каждая строка начинается с запятой.И CSV действительно использует значения, разделенные запятыми (не символы табуляции, пробелы и т. Д.).
Вот строка, которая взрывается:
DataTable dt = CsvEngine.CsvToDataTable(@"c:\somefile.csv", ',');
А вот ошибка:
Строка '' not является допустимым идентификатором .NET
Вот несколько примеров строк из CSV (первая строка - заголовок):
,ORG_NO,ORG_REV_NO,ZMODEL,Q_DATE
,7,1,02-8FD10 ,7/21/2009 9:33
,7,1,02-8FD14 ,7/21/2009 9:33
,7,1,02-8FD15 ,7/21/2009 9:33
,7,1,02-8FD18 ,7/21/2009 9:33
Заметьте, что первый символ каждой строки - запятая, и это, похоже, душит парсер.
В качестве последнего средства я могу зациклить файл, удалить первый символ и затем приступить к анализу - но есть ли более элегантный / простой способ справиться с этим?Я хотел бы подход, который просто обрабатывает его, вместо того, чтобы заглядывать в каждый CSV перед его разбором, посмотреть, является ли первый символ запятой, а затем выбрать альтернативный (и дорогой) путь к коду удаления запятой, если так.
Есть идеи?