我正在编写一个简单的导入应用程序,需要读取CSV文件,在a中显示结果DataGrid并在另一个网格中显示CSV文件的损坏行.例如,显示另一个网格中短于5个值的行.我试着这样做:
StreamReader sr = new StreamReader(FilePath);
importingData = new Account();
string line;
string[] row = new string [5];
while ((line = sr.ReadLine()) != null)
{
row = line.Split(',');
importingData.Add(new Transaction
{
Date = DateTime.Parse(row[0]),
Reference = row[1],
Description = row[2],
Amount = decimal.Parse(row[3]),
Category = (Category)Enum.Parse(typeof(Category), row[4])
});
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,在阵列上操作非常困难.有没有更好的方法来分割价值观?
我知道这个(或类似的)已被多次询问,但尝试了许多可能性,我无法找到一个100%正常的正则表达式.
我有一个CSV文件,我试图将它拆分成一个数组,但遇到两个问题:引用逗号和空元素.
CSV看起来像:
123,2.99,AMO024,Title,"Description, more info",,123987564
Run Code Online (Sandbox Code Playgroud)
我试图使用的正则表达式是:
thisLine.split(/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是在我的输出数组中,第5个元素是123987564,而不是空字符串.