我是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> ??
答案 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;
}
}