我正在编写一个简单的导入应用程序,需要读取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)
但在这种情况下,在阵列上操作非常困难.有没有更好的方法来分割价值观?
特定
2,1016,7 /二千○八分之三十一14:22,杰夫达尔加斯6 /二千零十一分之五22:21,http://stackoverflow.com, "科瓦利斯,OR",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34
如何使用C#将上述信息拆分为字符串,如下所示:
2
1016
7/31/2008 14:22
Geoff Dalgas
6/5/2011 22:21
http://stackoverflow.com
Corvallis, OR
7679
351
81
b437f461b3fd27387c5d8ab47a293d35
34
Run Code Online (Sandbox Code Playgroud)
如您所见,其中一列包含,<=(Corvallis,OR)
// update //基于 C#Regex Split - 引号外的逗号
string[] result = Regex.Split(samplestring, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Run Code Online (Sandbox Code Playgroud) 我想从CSV文件创建一个数组.
这很简单,你可以想象,CSV文件只有一行和这些值:
Device, SignalStrength, Location, Time, Age.
Run Code Online (Sandbox Code Playgroud)
我想把这些值放到一维数组中.
我已经尝试了一些例子,但它们都比需要的更复杂.