Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串不是';t正在拆分,但正在读取文件_C#_Parsing_Text_File Io_Split - Fatal编程技术网

C# 字符串不是';t正在拆分,但正在读取文件

C# 字符串不是';t正在拆分,但正在读取文件,c#,parsing,text,file-io,split,C#,Parsing,Text,File Io,Split,没有逗号,这就是为什么 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 但是,当我输出令牌[0]时,它是整行,而不是拆分。 令牌[1]到令牌[4]为空 我做错了什么?正如其他人指出的,数字之间的字符不是空格,而是类似空格的字符。下面的正则表达式将正确分割数字标记,而不管行中的字符是什么空间类型 line.Split('

没有逗号,这就是为什么

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
但是,当我输出令牌[0]时,它是整行,而不是拆分。 令牌[1]到令牌[4]为空


我做错了什么?

正如其他人指出的,数字之间的字符不是空格,而是类似空格的字符。下面的正则表达式将正确分割数字标记,而不管行中的字符是什么空间类型

line.Split(' ');

正如user2948630提到的,空格字符可以是一个选项卡式空格。如果您从网页或其他不可打印的字符复制文本,它也可能是一个不间断的空格。要确保拆分字符适用于所有可能的空格,可以使用正则表达式。比如说,

string[] tokens = Regex.Split(line, @"\s+");
\s元字符用于查找空白字符

空白字符可以是:

  • 空间字符
  • 制表符
  • 回车符
  • 新行字符
  • 垂直制表符
  • 换页字符

+将找到一个或多个出现的空白字符。

你确定那些不是逗号的东西是空格而不是其他东西吗?我不明白。调试代码时,您没有看到
0 1 0 0 0
0 4 0 0
吗?我正在尝试为每一行拆分一行。所以令牌[0]应该只输出0,而不输出其他内容。因为0是每行的第一个字符串。它们可能不是空格,而是制表符间距。我该怎么做?我从excel复制到记事本上,它会创建间隔的“制表符”。谢谢David Schwartz。我不确定它是什么,但我将它从txt文件复制/粘贴到编译器中,现在就可以工作了。这是你的答案,这样我就可以选择了。
string[] tokens = Regex.Split(line, @"\s+");
string[] tokens = Regex.Split(line, @"\s+");