Множественный разделитель в одной строке

Я бы использовал FileHelpers для импорта такого файла,

STATUS,USERID,CUSTOM1,CUSTOM2
Active,000001,"Company division "A"", "HRO"
Active,000002,"Company HQ", "HRO"

но не могу найти как указать разделитель полей который в свою очередь может содержать сам разделитель, может кто поможет?


person DaniloZ    schedule 17.02.2015    source источник
comment
Вот для чего нужны цитаты. В кавычках разделитель текстового поля следует игнорировать (и экранировать кавычки). Строго говоря, вам нужны кавычки, только если: 1) текст содержит разделитель или 2) текст содержит новую строку. Обратите внимание, что использование \t вместо запятой уменьшит вероятность наличия разделителя внутри текста.   -  person Adriano Repetti    schedule 17.02.2015
comment
Возможный дубликат stackoverflow.com/ вопросы/21134981/   -  person publicgk    schedule 15.09.2015


Ответы (2)


В другом потоке кто-то предложил использовать (вероятно, довольно новый) Microsoft.VisualBasic.FileIO.TextFieldParser (см. FileHelpers: как обрабатывать поля в кавычках при чтении файла). У меня была та же проблема с использованием файлов, сгенерированных Magento, поэтому я попробовал класс, и он правильно обрабатывает формат, упомянутый выше (двойные кавычки внутри текстового поля в кавычках).

Как пользователь C#, не беспокойтесь о VB, просто сошлитесь на стандартную сборку Microsoft.VisualBasic.
И, кстати, я не согласен с тем, что рассматриваемый формат недействителен, как предлагает другой пользователь. Напротив, я много раз видел это в своей работе, и, насколько я знаю, стандарта CSV-Format-Standard как такового не существует. В конце концов, вам просто нужно иметь дело с тем, что выходит из какой-то части программного обеспечения... ;-)

person PMue    schedule 15.09.2015

Вам, вероятно, следует взглянуть на CSVHelper, который поможет вам сделать это.

person krystan honour    schedule 17.02.2015
comment
Отличная работа, хотя все еще есть небольшая проблема, потому что поле [Подразделение компании A] импортируется как [Подразделение компании A], но, по крайней мере, разделяет их правильно. Спасибо - person DaniloZ; 17.02.2015
comment
Я хотел бы знать, кто проголосовал за это, когда оригинальный парень сказал, что это помогло ему... - person krystan honour; 17.02.2015
comment
Вероятно, за него проголосовали за то, что вместо FileHelpers был предложен совершенно другой движок. Однако в FileHelpers нет простого способа сделать это, кроме ручного разбора событий BeforeRead или INotifyRead. Макет выше имеет недопустимый формат, и источник создал файл неправильно, но сомнительно, что вы можете изменить источник. - person netniV; 09.08.2015