2016-03-24 29 views
-1

我有数据以这种形式:如何使用1D字符串类型数组来代替c#中的双类型二维锯齿状数组?

double[][] rawData = new double[3][]; 
rawData[0] = new double[] { 65.0, 220.0 }; 
rawData[1] = new double[] { 73.0, 160.0 }; 
rawData[2] = new double[] { 59.0, 110.0 }; 

现在我想从文本文件导入数据,并在地方这个数组数据的使用。我也想为文本文件数据使用双类型锯齿形数组。

在文件中的每一行的数据是以下形式:5.1,3.5,1.4,0.2

有在文本文件总150行。我想逐行读取文件,用逗号分隔并将每行保存为双精度型数组,如rawData[]][]。通过线

+0

你尝试过这么远吗?堆栈溢出是一个网站,可以帮助您学习,因为您似乎只是在寻求答案。 – Kane

+0

单词'double'表示以精确15-16位小数存储的_real编号(请参阅[double](https://msdn.microsoft.com/zh-cn/library/678hzkk9.aspx))。 如果你想存储一个字符串数组,那么你需要声明一个'string [] [] rawData'数组。 – Serge

回答

0

使用的LINQ尝试,你必须

  1. 文件行
  2. 拆分各线进入items用逗号
  3. 转换每个项目分为Double
  4. 实体化个物品进入(内)阵列
  5. Materialise的线为(外)阵列

实施

// let txt file being a CSV-like one 
    Double[][] data = File 
    .ReadLines(@"C:\MyFile.txt") 
    .Where(line => !String.IsNullOrEmpty(line.Trim())) // to remove empty lines if any 
    .Select(line => line.Split(',')) 
    .Select(items => items 
     .Select(item => Double.Parse(item, CultureInfo.InvariantCulture)) 
     .ToArray()) // inner array 
    .ToArray(); // outer array 
+0

尝试上面提到的方法会给出一个错误:“将字符串转换为DateTime时,解析字符串解析字符串以将每个值放入DateTime对象之前采用日期” –

+0

@ bint-e shafiq:如您所见,没有'DateTime'在我的代码片段;所以这是你的例程抛出异常;通常的原因是不正确的'DateTime.Parse();'调用(我的代码使用'Double.Parse' - 'Double',而不是'DateTime') –

+0

我可以看到代码中没有DateTime。其实我是新来的C#所以无法得到为什么这个错误发生。我试图使用Covert.ToDouble,但在这种情况下也会出现相同的错误。 “它的例程抛出了例外,你的意思是什么?”如何处理? –

相关问题