Вместо того, чтобы пытаться анализировать CSV-файлы самостоятельно, используйте библиотеку типа CsvHelper .Помните, что в CSV-файле разрешено присутствие Abc,Def,"Ghi,jkl",mno
, т. Е. Запятую можно найти внутри значений, а не только для разделения значений.Написание синтаксических анализаторов hard .
Я писал о CsvParser до , но вот пример с учетом вашей файловой структуры, я предположил, что имена вашихстолбцы точно , как показано на рисунке.Это заменяется со строки string csvData = System.IO.File.ReadAllText(filePath);
и далее:
IEnumerable<LineInMyCsvFile> allRecords = null;
using (var reader = File.OpenText(filePath))
{
var csvParser = new CsvParser(reader);
CsvReader r = new CsvReader(csvParser);
allRecords = r.GetRecords<LineInMyCsvFile>().ToArray();
}
Приведенный выше код считывает файл CSV и помещает содержимое каждой строки в allRecords
, затем вы можете выполнять итерацию по ним и делать все, что хотитеих:
foreach(var record in allRecords)
{
// Imagine you only care about the value in ColunmA:
listmobilenumber.Add(record.ColunmA);
}
Это структура, которая используется для отображения столбцов в вашем CSV-файле, чтобы CsvHelper
мог его обработать:
// I'm named badly, give me a sensible name that makes sense in context! :-)
struct LineInMyCsvFile
{
public string ColunmA { get; set; }
public string ColunmB { get; set; }
public string ColunmC { get; set; }
public string ColunmD { get; set; }
}