c#将文本文件读入数组

时间:2013-02-28 23:27:37

标签: c# arrays text-files

如何循环文本文件以从文本文件的内容创建六个数组。 例如,文本文件看起来像这样但有更多行(没有标题)可能有200行

top_speed average_speed cadence altitude heart_rate power

       84            73       0     -124          0    50
       86           179       84    -125        121  3893

每个人都有一个数组会很高兴。所以,例如

  

top_speed = 84 + 86:average_speed = 73 + 179 ...(依此类推)

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

无论如何,如果这是作业,下面的代码将无法帮助你:)但如果它不是作业,你将会理解如何使用LINQ解析这些文件

var items = 
   File.ReadAllLines(filename) // read lines from file
       .Select(line => line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
                           .Select(Int32.Parse) 
                           .ToArray()) // convert each line to array of integers
       .Select(values => new {
            TopSpeed = values[0],
            AverageSpeed = values[1],
            Cadence = values[2],
            Altitude = values[3],
            HeartRate = values[4],
            Power = values[5]
       }); // create anonymous object with nice strongly-typed properties

int[] topSpeeds = items.Select(i => i.TopSpeed).ToArray();

答案 1 :(得分:0)

您可以创建一个Record类,然后使用简单的LINQ查询:

var records = File.ReadLines("file.txt")
    .Select(line =>
        {
            string[] parts = line.Split('\t');
            return new Record
                {
                    TopSpeed = int.Parse(parts[0]),
                    AverageSpeed = int.Parse(parts[1]),
                    Cadence = int.Parse(parts[2]),
                    Altitude = int.Parse(parts[3]),
                    HeartRate = int.Parse(parts[4]),
                    Power = int.Parse(parts[5])
                };
        }).ToArray();

这将为您提供一堆记录,原始文件中每行一个。如果你想检查所有HeartRates以构建直方图或图形或其他什么,你可以像这样抓住它们:

var allHeartRates = records.Select(rec => rec.HeartRate);