字符串未拆分,但正在读取文件

时间:2013-11-03 13:19:30

标签: c# parsing text file-io split

public void LoadWorldMap()
{
    string path = "..\\Bin\\Assets\\WorldMap\\WorldMap.txt";
    //Open the file and read it. 
    string[] fileText = File.ReadAllLines(path);

    for (int index = 0; index < 320; index++)
    {
       string line = fileText[index];
       string[] tokens = line.Split(' ');

       System.Console.WriteLine(tokens[0]);
    }
}

该文件如下所示:

0   0   0   0   0

0   1   0   0   0

0   2   0   0   0

0   3   0   0   0

0   4   0   0   0

0   5   0   0   0

没有逗号,这就是

的原因
line.Split(' ');

然而,当我输出标记[0]时,它是整行,而不是分割。 令牌[1]到令牌[4]是空的。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如user2948630所述,空格字符可以是标签空间。如果您从网页或其他一些不可打印的字符中复制文本,它也可能是一个不间断的空间。要确保拆分字符适用于所有可能的空格,您可以使用正则表达式。例如,

string[] tokens = Regex.Split(line, @"\s+");

\ s元字符用于查找空白字符。

空格字符可以是:

  • 太空人物
  • 制表符
  • 回车符号
  • 新行字符
  • 垂直制表符
  • 换页字符

+会发现一个或多个空格字符。

答案 1 :(得分:0)

正如其他人所指出的那样,数字之间的字符不是空格,而是像字符一样的空格。以下正则表达式将正确分割数字标记,无论行中的char类型是什么空格。

string[] tokens = Regex.Split(line, @"\s+");