gpt4 book ai didi

c# - 在文件中查找字符串的最快方法

转载 作者:太空狗 更新时间:2023-10-29 22:20:18 25 4
gpt4 key购买 nike

我有一个不超过 10KB 的日志文件(文件大小最大可达 2MB),我想查找这些字符串中是否至少出现了一组。这些字符串将位于不同的行上,例如,

ACTION:.......

INPUT:...........

RESULT:..........

我至少需要知道文件中是否存在上述一组。我已经为测试做了大约 100 次(每次日志都不同,所以我重新加载并阅读了日志),所以我正在寻找最快和最好的方法来做到这一点。

我在论坛中查找了最快的方法,但我认为我的文件对于这些解决方案来说并不算太大。

感谢观看。

最佳答案

我会逐行阅读并检查条件。一旦你看到一个小组,你就可以退出。这样你就不需要将整个文件读入内存。像这样:

    public bool ContainsGroup(string file)
{
using (var reader = new StreamReader(file))
{
var hasAction = false;
var hasInput = false;
var hasResult = false;
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (!hasAction)
{
if (line.StartsWith("ACTION:"))
hasAction = true;
}
else if (!hasInput)
{
if (line.StartsWith("INPUT:"))
hasInput = true;
}
else if (!hasResult)
{
if (line.StartsWith("RESULT:"))
hasResult = true;
}

if (hasAction && hasInput && hasResult)
return true;
}
return false;
}
}

此代码检查是否有一行以 ACTION 开头,然后一行以 INPUT 开头,然后一行以 RESULT 开头。如果它们的顺序不重要,那么您可以省略 if () else if () 检查。如果该行不是以字符串开头,请将 StartsWith 替换为 Contains

关于c# - 在文件中查找字符串的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com