我尝试将csv文件中的数据转换为C#中的数组。 问题是这些行不像所有其他值那样用分号分隔。 这意味着只需将它们全部拆分,一行的最后一行和下一行的第一个值合并为一个位置。 我怎样才能以相同的方式拆分它,但是考虑到csv文件中的换行符(\ n)?
我的想法到目前为止就像是
String[] xyz;
For Loop to iterate over the data
If semicolon, split to the array
else if \n(?) split into the array.
我对编程很陌生,所以我不知道如何正确地做到这一点,希望你能帮助我。
答案 0 :(得分:0)
解析CSV没有比Lumenworks框架更好的选择。它不仅易于使用,而且重量轻,性能卓越。你可以从nuget获得图书馆 https://www.nuget.org/packages/LumenWorksCsvReader/
并解析你的csv,如
using (CsvReader csv = new CsvReader(new StreamReader(fileStream, Encoding.Default), true))
{
foreach (var record in csv)
{
//PARSE ROWS ONE BY ONE AND GET COLUMN VALUE BY INDEX
}
}
答案 1 :(得分:0)
您可以使用开源库来加载csv文件。其中有许多FileHelpers,CSVReader和Cinchoo ETL。
Cinchoo ETL有CSVReader。一个简单,快速且基于流的CSV解析器。
foreach (dynamic rec in new ChoCSVReader("test.csv").WithFirstLineHeader())
{
Console.WriteLine(rec.COMPANY_NAME);
Console.WriteLine(rec.COMPANY_TYPE);
}
答案 2 :(得分:-1)
如果文件不是太大,您可以先调用File.ReadAllLines()
来获取文本行数组。然后你可以分割该数组中的行。
string[] lines = File.ReadAllLines("MyFile.txt");
string[] splitted;
foreach(string line in lines)
{
splitted = line.Split(';');
...
}
或者您可以使用StreamReader
。
using (StreamReader sr = File.OpenText("MyFile.txt"))
{
string line;
string[] splitted;
while ((line = sr.ReadLine()) != null)
{
splitted = line.Split(';');
...
}
}