使用c#中的streamreader读取.csv文件

Bur*_*rak 2 c# csv

首先,我对编码和 C# 初学者水平非常陌生。我查看了问题,但找不到我的问题的正确答案或不明白。

我有一个 .csv 文件,文件中的行如下所示。我通过使用获得经度值float longitude = float.Parse(read[1]);但我也想在下面的示例中获得数字“3”。在我看来,我可以通过使用float.Parse(read[12]). 该数字位于该行的第 12 个索引中。但我无法通过使用float.Parse(read[12]). 当我使用时,float.Parse(read[9])我可以得到 3。这段代码没有读取逗号之间的缺失值。如何读取包括缺失值在内的所有数据?因为其他行不同,缺失值也在变化。有些行不包含日期信息,有些行不包含经度信息。

0000000,26.0000000,38.000000,30.01.2017,0,0,0,,,0,0,,3,,0,0,0,0

string[] read;
char[] seperators = { ',' };

StreamReader sr = new StreamReader("D:/xxx.csv");

string data = sr.ReadLine();

while ((data = sr.ReadLine()) != null)
{
    read = data.Split(seperators,StringSplitOptions.RemoveEmptyEntries);
    float longitude = float.Parse(read[1]);
    float latitude = float.Parse(read[2]);
}
Run Code Online (Sandbox Code Playgroud)

SO *_*ood 7

这条线

read = data.Split(seperators, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

说:

如果有两个逗号,一个接一个,忽略该条目

因此,您的输入变为:

0000000,26.0000000,38.000000,30.01.2017,0,0,0,0,0,3,0,0,0,0

你真正想要的是这个,它在数组中留下空值

read = data.Split(seperators, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)