当我已经有另一个分隔符时,如何让StreamReader跳过一行?

时间:2014-09-14 15:58:02

标签: c# delimiter streamreader

奥基。因此,我制作这个简单的脚本,从阵列中生成块,几乎就像一个基于tile的2D游戏。但它并不像我想要的那样预先形成,我知道为什么,但我找不到任何解决方案。如果可以,请帮助我:))

所以在这里我用一个空格作为分隔符来运行StreamReader:

    StreamReader reader = new StreamReader (@"blablabla\path\levelOneMap.txt");
    string s = reader.ReadToEnd();

    while(s != null)
    {
        char[] delimiter = {' '};
        // Level holder is a string array, wish hold x, s or h.
        levelHolder = s.Split(delimiter, System.StringSplitOptions.RemoveEmptyEntries);

        s = reader.ReadLine();
    }

他正在阅读的文件看起来像这样:

x x x

x s x

x h x

依此类推,x' es也是如此,它会产生一个块。 s是一个起始块, 而h只是地上的一个洞。

我做了一堆debug.logs并将x,s和h更改为1 2 3 4 ...以查看发生了什么。结果是第一个1 2很好,但是levelHolder [2]包含3和4。 如何让这个脚本理解它应该跳过这两个' '和' \ n' ?

1 个答案:

答案 0 :(得分:0)

调用ReadToEnd()后,您将整个文件放在一个变量中,并且该流已到达文件结尾。之后调用ReadLine()不会做任何事情。所以你可以删除循环。

然后添加您想要的任何分隔符,可能您需要所有ASCII空格字符({ ' ', '\t', '\r', '\n', '\v' })。

如果您希望将所有块放入单个levelHolder数组中,那就是这样。如果您希望每个行都在自己的数组中,请保持循环,并将初始ReadToEnd()更改为另一个ReadLine()