我正在使用 C# 读取一个 csv 文件,这里有一小段代码。
using (StreamReader readFile = new StreamReader("C:\\temp\\" + whichTable))
{
while ((line = readFile.ReadLine()) != null)
{
row = line.Split(',');
switch (row.Length)
{
case 5:
if (counter == 0)
{
break;
}
else
{
v00.Add(Convert.ToInt32(Regex.Replace(row[0], @"[^\w\.@-]", "")));
}
if (row[1] == "")
{
v01.Add((1));
}
else
{
v01.Add(Convert.ToInt32(Regex.Replace(row[1], @"[^\w\.@-]", "")));
}
if(row[2]=="")
{
v02.Add(2);
}
else
{
v02.Add(Convert.ToInt32(Regex.Replace(row[2], @"[^\w\.@-]", "")));
}
v3.Add(row[4]);
v4.Add(row[3]);
counter++;
break;
}
counter++;
}
break;
}
正如您从我的代码中看出的那样,我测试了字符串行的长度以确保它的长度恰好为 5。我的问题是,如果 csv 中有一个带逗号的字段,则计算结果会超过 5。我的 csv 格式正确,所以当发生这种情况时,我确实有一个双引号的字段。我如何告诉 C# 只计算双引号外的逗号?这确实是我的问题。
最佳答案
不要自己解析 CSV - 这种格式比大多数人意识到的更难正确解析。您可以改用许多现有的优秀 CSV 解析器。
有 TextFieldParser
住在 Microsoft.VisualBasic.FileIO 的图书馆命名空间(常规 .NET 库)和许多第三方的 - FileHelpers是一个流行的自由选择。
关于c# - 使用 C# 时读取 csv 文件,不要读取双引号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351864/