c# - 使用 C# 时读取 csv 文件,不要读取双引号中的逗号

标签 c# csv

我正在使用 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/

相关文章:

c# - 如何估计待打印字符串的长度?

c# - 每个类库的依赖注入(inject)容器

c - 如何使用 USB 端口将数据从 Arduino Uno 发送到 PC

csv - d3.csv.parseRows 和 d3.csv 输出不同的结果

python - 使用 Python 将 JSON 转换为 CSV 问题

c# - 如何获取线程执行完成事件

c# - Facebook C# SDK 授权失败 : IsSecureConnection = False

c# - AutoMapper:手动设置属性

linux - 如何从 .CSV 文件的几列中删除撇号 ( ' )?

python - 拆分CSV文件后将数据放入列表中 - Python