【问题标题】:c# reading text file into arrays [duplicate]c#将文本文件读入数组[重复]
【发布时间】:2023-03-30 02:48:02
【问题描述】:

如何遍历文本文件以根据文本文件的内容创建六个数组。 例如,文本文件看起来像这样,但有更多行(没有标题)可能有 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 ...(以此类推)

最好的方法是什么?

【问题讨论】:

  • 我闻到作业的味道...
  • 你试过什么?您认为哪种方法可以获得您想要的结果?
  • 这不仅容易做到,而且很容易用谷歌搜索。您是否正在寻找Console 应用程序、Winformsweb page
  • -1 KoreyLegend 对于严重缺乏努力这里是提示查找如何使用Split() 方法以及如何将ReadAllLines() 转换为List<>
  • KoreyLegend,你尝试过什么,你卡在哪里了?

标签: c# arrays text-files


【解决方案1】:

无论如何,如果那是作业,下面的代码对你没有帮助:) 但如果不是作业,你会明白如何用 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();

【讨论】:

    【解决方案2】:

    您可以创建一个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();
    

    这将为您提供一堆记录,原始文件中的每行一个。如果您想检查所有心率以构建直方图或图形或其他内容,您可以像这样获取它们:

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

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2020-06-14
      • 2017-06-07
      • 2011-05-21
      相关资源
      最近更新 更多