读取 CSV 文件时忽略双引号之间的逗号

Ignore Comma between double quotes while reading CSV file

CSV reader 用 c# 语言制作。它工作正常,但我无法忽略双引号行值之间的逗号 (',')。

示例: "aa"、"aa,bb"、"cc"

读起来像

Col1 Col2 Col3 Col4
aa   aa   bb   cc 

而不是这个,它应该读成

Col1 Col2 Col3 
aa   aabb cc 

这是我的代码:

public void LoadFile(String path)
{
    Table.Rows.Clear();
    Table.Columns.Clear();
    StreamReader file = File.OpenText(path);
    String[] header = file.ReadLine().Split(',');
    for (int i = 0; i < Table.ColumnCount; i++)
    {
        Table.Columns[i].Name = "Col " + i;}
        String row = "";
        while ((row = file.ReadLine()) != null)
        {
            Table.Rows.Add(row.Split(','));
        }
        file.Close();
    }
}

您可以通过将 Split 函数替换为正则表达式拆分函数来解决此问题

Table.Rows.Add(row.Split(','));

应替换为

Table.Rows.Add(Regex.Split(row, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"));

并在顶部添加程序集

using System.Text.RegularExpressions;

这将解决您的问题