C# 将文件拆分为数组时获取错误数据

C# 将文件拆分为数组时获取错误数据,c#,arrays,visual-studio-2010,split,C#,Arrays,Visual Studio 2010,Split,我有一个文件包含两行,每行包含200个字段,我想把它分成数组 using (StreamReader sr = File.OpenText(pathSensorsCalc)) { string s = String.Empty; while ((s = sr.ReadLine()) == null) { }; String line1 = sr.ReadToEnd(); String line2 = sr.ReadToEnd(); CalcVal

我有一个文件包含两行,每行包含200个字段,我想把它分成数组

using (StreamReader sr = File.OpenText(pathSensorsCalc))
{
     string s = String.Empty;
     while ((s = sr.ReadLine()) == null) { };
     String line1 = sr.ReadToEnd();
     String line2 = sr.ReadToEnd();
     CalcValue[0] = new String[200];
     CalcValue[1] = new String[200];
     CalcValue[0] = line1.Split(' ');
     CalcValue[1] = line2.Split(' ');
}
在上面的代码之后,
CalcValue[1]
为空,并且
CalcValue[0]
包含第二行的数据(第一行的instad)。有什么想法吗?

使用时

sr.ReadToEnd()
,您正在读取到输入流的末尾。也就是说,在第一次呼叫

String line1 = sr.ReadToEnd()

您的流已经位于最后一个位置。将您的
ReadToEnd()
调用替换为
ReadLine()
调用。这应该行。

在Windows操作系统中,新行由
\r\n
表示。因此,不应按空格(
)拆分行

这意味着您应该使用另一个重载的
Split
方法-
Split(char[],StringSplitOptions)
。第一个参数是要拆分的字符,第二个参数是选项。你为什么需要这些选项?因为如果按两个连续字符拆分,则得到一个空元素

因此,现在很容易理解此代码的作用以及原因:

line1.Split (new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);

如果我没有错的话,您也可以使用constant Environment.NewLine而不是直接创建字符数组。@thomassymala是的,您是对的。但我只是想让OP更多地了解Windows操作系统,而不是不知道Environment.NewLine的值是多少。@Sweeper我按照你的建议做了,现在我对包含该值的CalcValue[1][199]有问题:15139.5;;;;;;;;;;;(为什么会出现这些逗号?)谢谢!