我有一个包含以下内容的文本文件:
0 12
1 15
2 6
3 4
4 3
5 6
6 12
7 8
8 8
9 9
10 13
两行之间没有空格,但两个数字之间有空格。我想从txt文件中读取这些整数,并将这两列保存到C#中的两个不同的数组中。任何人都可以帮助
答案 0 :(得分:2)
尝试以下方法:
var r = File.ReadAllLines(path)
.Select(line => line.Split(' '))
.Select(arr => new
{
Column0 = Int32.Parse(arr[0]),
Column1 = Int32.Parse(arr[1])
// etc
})
.ToArray();
然后:
int[] column0 = r.Select(x => x.Column0).ToArray(); // note double loop over r
int[] column1 = r.Select(x => x.Column1).ToArray();
或更长但也更有效:
int[] column0 = new int[r.Length], column1 = new int[r.Length];
for (int i = 0; i < r.Length; i++) // single loop over r
{
column0[i] = t[i].Column0;
column1[i] = t[i].Column1;
}
甚至更长,但也更有效率(一般来说):
List<int> column0 = new List<int>(), column1 = new List<int>();
using (Stream stream = File.Open(path, FileMode.Open))
using (TextReader sr = new StreamReader(stream, Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] arr = line.Split(' ');
column0.Add(Int32.Parse(arr[0]);
column1.Add(Int32.Parse(arr[1]);
}
}
迭代/显示结果(基于零索引,即行0,1等):
for (int i = 0; i < column0.Length; i++)
{
Console.WriteLine("Line {0}: column 0: {1}, column 1: {2}", i, column0[i], column1[i]);
}
为了更好的可靠性,请使用函数而不是Int32.Parse:
static int Parse(string input)
{
int i;
if (!Int32.TryParse(intput, out i)
throw new Exception("Can't parse " + input);
return i;
}
答案 1 :(得分:0)
您也可以查看以下代码。
string data = string.Empty;
List<int[]> intarray = new List<int[]>();
void ReadData()
{
data = File.ReadAllText("Input.txt");
}
List<int[]> Getdata()
{
string[] lines = data.Split('\n', '\r');
foreach (string line in lines)
{
if(!string.IsNullOrEmpty(line.Trim()))
{
int[] intdata = new int[2];
string[] d = line.Split(' ');
intdata[0] = Convert.ToInt32(d[0]);
intdata[1] = Convert.ToInt32(d[1]);
intarray.Add(intdata);
intdata = null;
}
}
return intarray;
}