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

Kar*_*nDS 0 c# csv streamreader

使用C#语言制作的CSV阅读器。它可以正常工作,但是我不能忽略双引号行值之间的逗号(',')。

示例:“ aa”,“ aa,bb”,“ cc”

它看起来像

Col1 Col2 Col3 Col4
aa   aa   bb   cc 
Run Code Online (Sandbox Code Playgroud)

而不是这样,它应显示为

Col1 Col2 Col3 
aa   aabb cc 
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以通过用正则表达式拆分功能替换拆分功能来解决此问题

Table.Rows.Add(row.Split(','));
Run Code Online (Sandbox Code Playgroud)

应该换成

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

并在顶部添加程序集

using System.Text.RegularExpressions;
Run Code Online (Sandbox Code Playgroud)

这将解决您的问题