2014-11-05 4 views
0

В настоящее время я просматриваю разбиение CSV-файла, который считывается в приложение запятой, однако есть законные запятые, заключенные в двойные кавычки, которые становятся разделенными, когда я не хочу они должны быть.parse csv file, игнорируя запятую, содержащиеся в кавычках C#

при использовании TextFieldParser это чтение полей, которые я хочу прочитать, однако его чтение всех полей, а затем я изо всех сил пытаюсь получить их на правильных строках.

public string ParseCSVForFields(string dataFileName) 
    { 

     var sb = new StringBuilder(); 
     var line = new List<string>(); 
     using (TextFieldParser parser = new TextFieldParser(dataFileName)) 
     { 
      parser.TextFieldType = FieldType.Delimited; 
      parser.SetDelimiters(","); 
      parser.HasFieldsEnclosedInQuotes = true; 

      while (!parser.EndOfData) 
      { 
       //Processing row 
       string currentRow = parser.ReadLine(); 
       string[] fields = parser.ReadFields(); 
       foreach (var field in fields) 
       { 
       // this is where i am stuck 
       } 



      } 

     } 

     return null; 

    } 

любая помощь будет очень признательна.

благодарит

+0

Сделай сам? Или зайдите и используйте filehelpers http://filehelpers.sourceforge.net/ – Pleun

+0

HasFieldsEnclosedInQuotes означает, что ваши значения и заключены в кавычки вроде: «val, val2, val3», «val4», тогда парсер вернет «val, val2, val4 "| "val4" –

+0

Я не понимаю проблему из текущего описания. Не могли бы вы представить пример ввода, ожидаемого вывода и фактического вывода? – Dialecticus

ответ

1

Вы вызываете как ReadLine и ReadFields. Это кажется подозрительным. Удалите деталь ReadLine.

+0

в дополнение к этому i также отсутствовал parser.HasFieldsEnclosedInQuotes = true; –

Смежные вопросы