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

时间:2017-09-18 16:41:10

标签: c# csv streamreader

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

实施例: “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();
    }
}

1 个答案:

答案 0 :(得分:3)

您可以通过使用正则表达式拆分功能

替换拆分功能来解决此问题
Table.Rows.Add(row.Split(','));

应替换为

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

在顶部添加装配

using System.Text.RegularExpressions;

这将解决您的问题