将文本文件中的文本读取到字符串多维数组

时间:2016-11-21 12:38:52

标签: c# arrays

所以我遇到了一个问题,我在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++; 
}

3 个答案:

答案 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]位置,然后您需要更改的是从01的计数开始

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]);