我有一个 .csv 文件,其中包含许多行和 3 列(用“;”分隔)和数字,我将其转换为双数组[][]
现在我添加了更多数字列并收到错误:
FormatException -> Input string was not in a correct format
我找不到问题所在,因为文件是相同的(但多了 2 列) 我的代码:
OpenFileDialog fD = new OpenFileDialog();
fD.Title = "select";
fD.Filter = "csv files|*.csv";
fD.InitialDirectory = @"path here";
if (fD.ShowDialog() == DialogResult.OK)
MessageBox.Show(fD.FileName.ToString());
double[][] termom = File.ReadLines(fD.FileName)
.Select(l => l.Split(';')
.Select(n => double.Parse(n))
.ToArray())
.ToArray();
最佳答案
您的文件 res1.csv
(前提是它应仅包含 double
值)存在一些语法错误,例如
1881081,9;6,315177;352,499964;01,06,1974;350,645
01,06,1974
的含义是什么?我们是否应该忽略逗号(将它们视为某种千位分隔符)?或者是日期(1974 年 6 月 1 日
)?另一种可能性是 ,
是一个派生,因此我们有三个单独的值:1
, 6
和 1974
如果您想忽略逗号(因此01,06,1974将是1061974.0),只需指定InvariantCulture
解析时:
double[][] termom = File.ReadLines(fD.FileName)
.Select(l => l.Split(';')
.Select(n => double.Parse(n, CultureInfo.InvariantCulture))
.ToArray())
.ToArray();
如果您想将 ,
视为派生者(因此 01,06,1974 将是 [1.0, 6.0, 1974.0] )
double[][] termom = File.ReadLines(fD.FileName)
.Select(l => l.Split(';', ',') // ',' is a deriver as well as ';'
.Select(n => double.Parse(n, CultureInfo.InvariantCulture))
.ToArray())
.ToArray();
关于C# csv文件到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181998/