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>的循环?
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;
}
}