2015-04-16 3 views
1

Я пытаюсь прочитать файл CSV с форматом: наименования, местонахождение Иосифа, «улица xpto, Лондоном»Чтения CSV файл C# с запятой разделителем

Когда я прочитал CSV, я разделить файл «,», но когда линия имеет «street xpto, London» (другие запятые), она не работает.

Есть ли какое-то решение? Мне нужно сделать split, игнорируя запятые, когда вы найдете «».

var reader = new StreamReader(File.OpenRead(@"C:\example_File.csv")); 

while (!reader.EndOfStream) 
{ 
    var line = reader.ReadLine(); 
    String[] values = line.Split(','); 

    for (int i = 0; i < values.Length; i++) 
    { 
    } 
} 
+2

это адрес, в окружении цитат, как показано? Вы бы лучше изучали библиотеку синтаксического анализа csv, хотя .. – Sayse

+3

[смотрите здесь] (http://stackoverflow.com/questions/11351864/read-csv-file-when-with-c-sharp-and-dontread -commas-in-double-quotes) – Szer

+1

'TextFieldParser'или' FileHelpers' - это способы пойти – DrKoch

ответ

0

Текстовое поле парсер обрабатывает это уже

using System; 
using Microsoft.VisualBasic.FileIO; 

class Program 
{ 
    static void Main() 
    { 
    using (TextFieldParser parser = new TextFieldParser("C:\\csv.txt")) 
    { 
     parser.Delimiters = new string[] { "," }; 
     while (true) 
     { 
     string[] parts = parser.ReadFields(); 
     if (parts == null) 
     { 
      break; 
     } 
     Console.WriteLine("{0} field(s)", parts.Length); 
     } 
    } 
    } 
} 
4

Не изобретайте велосипед. Есть очень хорошие библиотеки, которые помогут вам сделать все это. Мне нравится CsvHelper, доступный через nuget Install-Package CsvHelper или от project home page.

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