拆分文本文件非常慢

时间:2014-02-09 00:20:24

标签: c# split streamreader

我在文本文件中有一个数据库,由某些单词(NUM / OPP / TUM / YUR /等)拆分,以了解每个数据应该去哪里。问题是运行这个非常慢,在.txt文件中通过所有三千件事需要大约一个小时,很可能是由于.Split()(我认为)。

有更快的方法吗?

wholepage = streamReader.ReadToEnd();
while (true)
{
    tempword = wholepage.Split()[tempnum];
    tempnum++;
    if (lastword == "NUM")
    {
        things[number_of_things].num = tempword;
        number_of_things++;
        slist.Add(new string[] { tempword });
        listBox5.Items.Add(tempword);
    }
    lastword = tempword;
}

提前致谢。

编辑:感谢帮助人员......是的,它是无限循环,这在当时无关紧要,因为它永远不会通过循环一次(除非你等了一个小时)。

2 个答案:

答案 0 :(得分:4)

是的,每次执行循环时,只将输入拆分一次:

wholepage = streamReader.ReadToEnd();
var split = wholepage.Split();
while (true)
{
    tempword = split[tempnum];
    // (...)
}

顺便说一下。你没有停止你的循环所以它可能永远不会结束(好吧,实际上它确实如此,当索引大于数组中的项数并抛出异常时)。您应该使用foreach代替while

wholepage = streamReader.ReadToEnd();
var split = wholepage.Split();
foreach(var tempword in split)
{
    if(lastword == "NUM")
    {
        things[number_of_things].num = tempword;
        number_of_things++;
        slist.Add(new string[] { tempword });
        listBox5.Items.Add(tempword);
    }
    lastword = tempword;
}

答案 1 :(得分:0)

不要反复拆分! 把它带到循环外面......

myPage = wholepage.Split();

然后在你的循环中:     tempword = MYPAGE [tempnum]

此外,不是while(true),它只是保持循环,而是使用for循环      其中myPage.length< tempnum