将文本保存到数组

时间:2014-03-13 18:00:52

标签: c#

我一直在使用此链接作为示例,但一直遇到麻烦: 2d Array from text file c#

我有一个包含以下内容的文本文件:

1 1 0 0
1 1 1 0
0 0 0 1
0 1 0 0

我正在尝试使用该功能:

static void Training_Pattern_Coords()
{
    String input = File.ReadAllText(@"C:\Left.txt");

    int i = 0, j = 0;
    int[,] result = new int[4, 4];
    foreach (var row in input.Split('\n'))
    {
        j = 0;
        foreach (var col in row.Trim().Split(' '))
        {
            result[i, j] = int.Parse(col.Trim());
            j++;
        }
        i++;      
    }
    Console.WriteLine(result[1, 3]);

    Console.ReadLine();
}

但是我在以下行继续收到错误消息(输入字符串的格式不正确):

foreach (var row in input.Split('\n'))

我认为它与文本文件中的空格有关,但我并不完全确定。谢谢你的帮助!

4 个答案:

答案 0 :(得分:2)

而不是File.ReadAllText使用File.ReadLines。通过这样做,您不需要使用Split('\n')

int[,] result = new int[4, 4];

var lines = File.ReadLines(@"C:\Left.txt")
               .Select(x => x.Split()).ToList();
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        result[i, j] = int.Parse(lines[i][j]);
    }
}

答案 1 :(得分:1)

尝试ReadAllLines而不是ReadAllText

答案 2 :(得分:0)

替换任何\r(回车)

input = input.Replace('\r',' ');

答案 3 :(得分:0)

将\ r \ n替换为&#34; \ r \ n&#34;

试试这个:

foreach (var row in input.Split("\r\n"))