从c#中的文本文件中读取整数
我有一个包含以下内容的文本文件:
0 12 1 15 2 6 3 4 4 3 5 6 6 12 7 8 8 8 9 9 10 13
两行之间没有空格,但两个数字之间有空格。 我想从txt文件中读取这些整数,并将这两列保存到C#中的两个不同的数组中。任何人都可以帮忙
请尝试以下方法:
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 column0 = new List (), column1 = new List (); 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; }
您也可以查看以下代码。
string data = string.Empty; List intarray = new List(); void ReadData() { data = File.ReadAllText("Input.txt"); } List 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; }