C# 在长文本中查找单词

本文关键字:查找 单词 文本 | 更新日期: 2023-09-27 18:34:54

我是C#新手,有一些问题。我打开一个文件,但它们很大,包含 +700 000 行。在这个文本文件中,我正在寻找包含"mySecretText"的行数。现在,我需要从 NUMBER+1 到某个 OhherLine 的行中搜索文本(例如。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>的循环?

C# 在长文本中查找单词

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;
}

这样可以防止您在要查找的范围之后浪费任何时间阅读行。

您可以修改循环,如下所示,使其仅在指定范围内搜索(即在 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) {} 。希望这会有所帮助。

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

    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;
        }
    }