-4

テキスト ファイルをループして、テキスト ファイルの内容から 6 つの配列を作成するにはどうすればよいですか。たとえば、テキスト ファイルは次のようになりますが、より多くの行 (タイトルなし) を使用すると、おそらく 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 ... (など)

これを行う最善の方法は何ですか?

4

2 に答える 2

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();

これにより、元のファイルの行ごとに 1 つずつ、一連​​のレコードが得られます。ヒストグラムやグラフなどを作成するためにすべての HeartRates をチェックしたい場合は、次のように取得できます。

var allHeartRates = records.Select(rec => rec.HeartRate);
于 2013-02-28T23:51:13.653 に答える
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();
于 2013-02-28T23:40:07.843 に答える