我有一个包含此信息的文本文件:
#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[]
。
答案 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;
}