分配数组的变量



我正在尝试为我的第二个(lines2)数组的四个部分分配变量(var1-4)。

static void Main(string[] args)
{
string var1;
string var2;
string var3;
string var4;
string readContents;
using (StreamReader streamReader = new StreamReader(@"File.txt"))
{
readContents = streamReader.ReadToEnd();
string[] lines = readContents.Split('r');
foreach (string s in lines)
{
string[] lines2 = s.Split('t');
foreach (string s2 in lines2)
{
var1 = lines2[0];
var2 = lines2[1];
var3 = lines2[2];
var4 = lines2[3];
Console.WriteLine(var4);
}
}
}
}

目前,我遇到了一个问题,var1返回我想要的数据,但控制台显示的值比我的文件中实际存在的值多 8 倍。而且在运行时,我总是在第一个var之后的每个上都得到一个IndexOutOfRangeException。不确定是什么导致了这些错误。

编辑:来自文本文件的数据 - 每个用制表符分隔:

2015-04-19 00:00:00  HostName.ErrorLevel    IP Address  "Error Message"
2015-04-19 00:00:00  HostName.ErrorLevel    IP Address  "Error Message"
2015-04-19 00:00:01  HostName.ErrorLevel    IP Address  "Error Message"

您可以遍历Split的结果并对每个 OR 执行某些操作,或者按索引访问结果。您的代码同时执行这两项操作,并且有机会正确,它将多次重复赋值。

此外,您没有检查字符串中的部分数并因此获得"索引超出范围"。

已经有将所有行读取为可枚举的方法 - File.ReadAllLines,所以唯一剩下的就是正确拆分每个字符串:

foreach (string s in lines)
{
string[] lines2 = s.Split('t');
if (lines2.Length == 4)
{
var1 = lines2[0];
var2 = lines2[1];
var3 = lines2[2];
var4 = lines2[3];
Console.WriteLine(var4);
}
else
{ 
// report error?
}
}
}

相关内容

  • 没有找到相关文章

最新更新