C#以长文字查找单词

时间:2014-12-22 17:14:37

标签: c# search text-files

我是C#中的新手并且遇到了一些问题。我打开一个文件,但是它们很大,总数为+700 000行。 在这个文本文件中,Iam正在寻找包含“mySecretText”的NUMBER行。 现在,我需要从NUMBER + 1到someOhherLine的行搜索文本(例如。 for(line1000; line2000; line ++){}

现在我的代码如下:

        while ((line = file.ReadLine()) != null)
        {
            i++;
            if (line.Contains("mySecretWord"))
            {
                System.Console.WriteLine("YES");
                System.Console.WriteLine(i);
                break;
            }
        }

如何编写一个只读取/搜索行< 1000的循环; 2000> ??

3 个答案:

答案 0 :(得分:1)

您可以修改您的循环,如下所示,仅在指定范围内搜索(即在1000和2000之间的行中):

while ((line = file.ReadLine()) != null)
{
    i++;
    if (i>=1000 && i<=2000 && line.Contains("mySecretWord"))
    {
        System.Console.WriteLine("YES");
        System.Console.WriteLine(i);
        break;
    }
}

或者,使用else if条件语句以更优雅和速度优化的形式:

while ((line = file.ReadLine()) != null)
{
    i++;
    if (i < 1000) continue;
    else if (i > 2000) break;
    else if (line.Contains("mySecretWord"))
    {
        System.Console.WriteLine("YES");
        System.Console.WriteLine(i);
        break;
     }
}

注意:continue;在第一个if条件中是可选的:该行可以简写为if (i < 1000) {}。 希望这会有所帮助。

答案 1 :(得分:1)

for (int i = 0; i < start; ++i){
    file.ReadLine();
}
for (int i = start; i < finish; ++i){
    if(file.ReadLine().Contains("mySecretWord")){
            System.Console.WriteLine("YES");
            System.Console.WriteLine(i);
            break;
}

这样可以避免在您正在寻找的范围之后随时阅读线条。

答案 2 :(得分:0)

我认为这可以满足您的需求:

    var i = 0;
    var @from = 1000;
    var to = 2000;
    while ((line = file.ReadLine()) != null)
    {
        i++;

        if (i < @from)
            continue;

        if (i > to)
            break;

        if (line.Contains("mySecretWord"))
        {
            System.Console.WriteLine("YES");
            System.Console.WriteLine(i);
            break;
        }
    }