我有一段程序,用来获取一个以制表符分隔的多行文本文件内容//str=文本文件的字符串内容
//LineStr是每一行内容
//r是每一行中制表符分隔的内容string[] LineStr = str.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);foreach (string eachLineStr in LineStr)
{
//行内容太小丢弃
if (eachLineStr.Length < 2)
{
continue;
}
//以字符“品种”开头的行是一个抬头行
if (eachLineStr.Substring(0, 2) == "品种")
{
Console.WriteLine(eachLineStr); //输出抬头
}
//获取每行内容
string[] r = eachLineStr.Split(new string[] { "\t" },StringSplitOptions.None);
//行元素个数符合要求时,输出行
if (r.Length == 10)
{
Console.WriteLine(eachLineStr);//输出有效内容
}
}现在的问题是我每次运行这段代码的时候在VS2005中输出的抬头和有效内容的顺序与文本文件中的顺序不一致!(文本文件中抬头在有效内容之前,但是输出窗口中的输出有效内容在抬头之前。)
另外一点这段代码是用在BackGroundWorker的Do_Work调用的方法中,是否因为这个原因造成VS2005输出顺序的不一致?
//LineStr是每一行内容
//r是每一行中制表符分隔的内容string[] LineStr = str.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);foreach (string eachLineStr in LineStr)
{
//行内容太小丢弃
if (eachLineStr.Length < 2)
{
continue;
}
//以字符“品种”开头的行是一个抬头行
if (eachLineStr.Substring(0, 2) == "品种")
{
Console.WriteLine(eachLineStr); //输出抬头
}
//获取每行内容
string[] r = eachLineStr.Split(new string[] { "\t" },StringSplitOptions.None);
//行元素个数符合要求时,输出行
if (r.Length == 10)
{
Console.WriteLine(eachLineStr);//输出有效内容
}
}现在的问题是我每次运行这段代码的时候在VS2005中输出的抬头和有效内容的顺序与文本文件中的顺序不一致!(文本文件中抬头在有效内容之前,但是输出窗口中的输出有效内容在抬头之前。)
另外一点这段代码是用在BackGroundWorker的Do_Work调用的方法中,是否因为这个原因造成VS2005输出顺序的不一致?
跟这个没有关系的!
这么改改看? //以字符“品种”开头的行是一个抬头行
if (eachLineStr.Substring(0, 2) == "品种")
{
Console.WriteLine(eachLineStr); //输出抬头
//获取每行内容
string[] r = eachLineStr.Split(new string[] { "\t" },StringSplitOptions.None);
//行元素个数符合要求时,输出行
if (r.Length == 10)
{
Console.WriteLine(eachLineStr);//输出有效内容
}
}
if (eachLineStr.Substring(0, 2) == "品种")
{
Console.WriteLine(eachLineStr); //输出抬头
}
试试?