如何从C#中的文本文件获取数据

时间:2018-10-03 22:53:14

标签: c#

我有一个包含此信息的文本文件:

#ID maxSize tax
1 57247 0.0887
2 98732 0.1856
3 134928 0.2307
4 77275 0.1522
5 29240 0.0532
6 15440 0.0250
7 70820 0.1409
8 139603 0.2541
9 63718 0.1147
10 143807 0.2660

我想知道如何使用ID获得int[],使用maxSize获得另一个int[]和获得税收的double[]

2 个答案:

答案 0 :(得分:0)

这是应该执行您想要的功能。只需确保将文件名更改为实际文件的路径即可。

它使用String.Split将每一行分成3个值。然后,它将这三个值中的每一个解析为您期望的类型,并将它们添加到各个数组中。

void ParseData( string data[], out int[] id, out int[] maxsize, out double[] tax )
{
    var lines = data.Select( line => line.Split((char[])null, StringSplitOptions.RemoveEmptyEntries) )
                    .Select( items => Tuple.Create( int.Parse(items[0]), int.Parse(items[1]), double.Parse(items[2]) ) );

    id = lines.Select( s => s.Item1 ).ToArray();
    maxsize = lines.Select( s => s.Item2 ).ToArray();
    tax = lines.Select( s => s.Item3 ).ToArray();
}

int[] ids;
int[] maxsizes;
double[] taxes;
string[] rawdata = File.ReadAllLines(@"FILENAME");

ParseData( rawdata, out ids, out maxsizes, out taxes );

答案 1 :(得分:0)

这是可以读取文件并将其解析为int [] int []和double []的代码

注意,我忽略了第一行#ID maxSize tax 您必须在开始之前添加这些行;

using System;
using System.IO;
using System.Collections.Generic;

代码

var fileName = @"FileName";
var rawLines[] = File.ReadAllLines(fileName);
var ids = new List<int>();
var maxSizes = new List<int>();
var taxes = new List<double>();
foreach(var line in rawLines) {
    var data = line.Split(' ');
    ids.Add(Convert.ToInt32(data[0]));
    maxSizes.Add(Convert.ToInt32(data[1]));
    taxes.Add(Convert.ToDouble(data[2]));
}

// using lists
Console.WriteLine($"First Data - {ids[0]}  {maxSizes[0]}  {taxes[0]}");

注意:如果您的文件由第一行#ID maxSize tax组成,请在var data = line.Split(' ');之后添加以下代码

// safegaurd to prevent exception thrown while converting string to number types
if(!int.TryParse(data[0])) {
     continue;
}