我正在使用System.IO.File.ReadAllLines
来读取.txt文件。
它返回一个string[]
,但是人类也可以将其称为2D char
数组,这正是我要放入的数组。我正在尝试找出此数组的第二维,并尽可能抽象。
string[] textFile = System.IO.File.ReadAllLines(path);
char[,] charGrid = new char[textFile.GetLength(0), textFile.GetLength(1)];
IndexOutOfRangeException: Index was outside the bounds of the array.
我知道我可以遍历数组并自己找到第二维的长度,但是我正在寻找一种简单,易读和抽象的解决方案。
ps:我输入的txt文件:
#111
1-1
-00
10-
答案 0 :(得分:0)
您需要找到文件中最长行的长度(因为这种方法本质上给了您一个锯齿状的数组)。可以使用以下代码完成此操作:
int dimension = textFile.Max(line => line.Length);
您需要添加using System.Linq;
才能使用Max
,这将返回Length
数组中所有字符串中最大的textFile
的值。 br />
然后只需将dimension
(或任何您想调用的东西)放入char数组声明中即可。
char[,] charGrid = new char[szTest.Length, dimension];
答案 1 :(得分:0)
此解决方案假定每行具有相同的字符数。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
String path = @"input.txt";
string[] textFile = File.ReadAllLines(path);
char[,] charGrid = new char[textFile.Length, textFile[0].Length];
int i, j;
i = 0;
foreach (string line in textFile)
{
j = 0;
foreach (char c in line)
{
charGrid[i, j] = c;
j++;
}
i++;
}
Console.WriteLine(charGrid[0,0] + "" + charGrid[0, 1] + "" + charGrid[0, 2]);
Console.WriteLine(charGrid[1, 0] + "" + charGrid[1, 1] + "" + charGrid[1, 2]);
Console.WriteLine(charGrid[2, 0] + "" + charGrid[2, 1] + "" + charGrid[2, 2]);
Console.ReadLine();
}
}
}