所以我遇到了一个问题,我在TXT文件中有一个大文本,我需要将它读入一个多维数组,而不使用LINQ。
示例:
你好(a11)我的(a12)朋友(a13)。
我的(a21)名称(a22)是(a23)大卫(a24),
我(a31)am(a32)来自(a33)英格兰(a34)。
到目前为止我做了什么:
String input = File.ReadAllText( "..\\..\\Analize.txt" );
int i = 0, j = 0;
string[,] result = new string[10, 10];
foreach (var row in input.Split('\n'))
{
j = 0;
foreach (var col in row.Trim().Split(' '))
{
result[i, j] = string(col.Trim());
j++;
}
i++;
}
答案 0 :(得分:0)
对于其他人说他的代码“工作得很好 - 如果他的文本不是动态大小的话也是如此 - 但是如果在这个特定的例子中有更多的行然后10或更多的单词然后是10,那么将会有 IndexOutOfRangeException !
如果你对你的文件一无所知,那么最好不要遇到异常:
string[] lines = File.ReadAllLines("C:/temp/test.txt");
int sizex = lines.Length;
int sizey = 1;
for (int i = 0; i < lines.Length; i++)
{
var splitline = lines[i].Split(' ');
sizey = sizey < splitline.Length ? splitline.Length : sizey;
}
String[,] multillines = new string[sizex,sizey];
for (int i = 0; i < lines.Length; i++)
{
var splitline = lines[i].Split(' ');
for (int j = 0; j < splitline.Length; j++)
{
multillines[i, j] = splitline[j];
}
}
答案 1 :(得分:0)
你的代码工作得很好。不确定你的问题是什么。但如果这样:
您好(A11)
表示此单词必须位于[1,1]位置,然后您需要更改的是从0
到1
的计数开始
int i = 1, j = 1;
答案 2 :(得分:-1)
试试这个:
String input ="Hello(a11) my(a12) friend(a13)";
int i = 0, j = 0;
int[,] result = new int[10, 10];
foreach (var row in input.Split(' '))
{
j = 0;
foreach (var col in row.Trim().Split(' '))
{
result[i, j] = int.Parse(col.Trim());
j++;
}
i++;
}
Console.WriteLine(result[3,9]);