Как читать двойные кавычки ("") в CsvReader с помощью С#?

Я пытаюсь прочитать файл csv, используя следующий код. Это исключение, если в данных есть двойные кавычки (""). Я хочу обрабатывать все специальные символы во время чтения.

using (TextReader reader = new StreamReader("C:\\test\test.csv"))
{
    using (CsvReader csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        csv.Read();
        csv.ReadHeader();
        while (csv.Read())
        {
           var result= csv[0].Split(';');
        }
     }
}

Мой файл CSV: строка csv.Read не работает в строке № 3

Name;Location;State;Country
Keka1;Lansing; MI; USA
Keka2;"Ohio"; OH; USA  // Error at this line 
Keka3;Lansing; MI; USA

Я не хочу избегать кавычек, но хочу включить их. Пожалуйста посоветуй.

TextFieldParser Класс
GSerg 16.05.2022 22:30

С библиотекой CSV вам не понадобится Split(';').

Henk Holterman 16.05.2022 22:46

Вам нужно установить CsvConfiguration.Delimiter = ";", как показано в этот ответ, на Как мы можем написать разделитель, например, sep=, используя библиотеку CsvHelper?. Тогда все должно быть готово. Вам не нужно будет делать csv[0].Split(';');, так как библиотека разделит строки на ячейки, используя указанный разделитель. На самом деле я думаю, что это дубликат этого вопроса, согласны?

dbc 16.05.2022 22:59

Да, var config = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = ";" }; и тогда using (var csv = new CsvReader(reader, config)) работает, см. dotnetfiddle.net/SnBQAg. Закрытие как дубликат.

dbc 16.05.2022 23:57
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Какой CsvReader класс вы используете? (Я создал такой класс под названием SoftCircuits.CsvParser.)

В любом случае, вы не используете его правильно. Код, который у вас есть, может просто использовать обычный поток ввода, потому что вы, кажется, читаете строку за раз, а затем анализируете ее. Читатели CSV проанализируют его для вас и обработают поля с двойными кавычками.

Я использую класс CsvHelper. Я хочу читать построчно

aka baka 16.05.2022 22:38

Я протестировал класс SoftCircuits.CsvParser, и он прекрасно обрабатывает кавычки.

aka baka 16.05.2022 22:56

Другие вопросы по теме