读取 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;
这将解决您的问题
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;
这将解决您的问题