C# 文本文件解析-如何搜索特定字符串并返回整行?

C# 文本文件解析-如何搜索特定字符串并返回整行?,c#,C#,e、 g txt文件包含以下条目: 英国是个寒冷的国家 印度是一个贫穷的国家 英国是个寒冷的国家 英国是个寒冷的国家 印度是一个贫穷的国家 英国郡板球季。 现在我想在这个txt文件中搜索字符串“england”,并返回包含该字符串的整行。我如何使用C语言来实现它>P>我会考虑两种方法,对于大文件(兆字节)和相对较小的。 大文件 若文件很大并且包含兆字节的数据:使用流读取器,读取文件直到内测,分析刚刚读取的字符串 string pattern = "england"; IList<stri

e、 g txt文件包含以下条目:

英国是个寒冷的国家 印度是一个贫穷的国家 英国是个寒冷的国家 英国是个寒冷的国家 印度是一个贫穷的国家 英国郡板球季。
现在我想在这个txt文件中搜索字符串“england”,并返回包含该字符串的整行。我如何使用C语言来实现它

>P>我会考虑两种方法,对于大文件(兆字节)和相对较小的。

大文件 若文件很大并且包含兆字节的数据:使用流读取器,读取文件直到内测,分析刚刚读取的字符串

string pattern = "england";
IList<string> result = new List<string>();
using (var reader = new StreamReader("TestFile.txt")) 
{
    string currentLine;
    while ((currentLine= reader.ReadLine()) != null) 
    {
        if (currentLine.Contains(pattern)
        {
            // if you do not need multiple lines and just the first one
            // just break from the loop (break;)            
            result.Add(currentLine);
        }
    }
}
.NET4-4.5:

string pattern = "england";
IEnumerable<string> result = File.ReadLines()
                                 .Where(l => l.Contains(pattern));
string pattern=“英格兰”;
IEnumerable result=File.ReadLines()
其中(l=>l.Contains(pattern));
如果只需要第一行,请使用
.FirstOrDefault(l=>l.Contains(pattern))
而不是
Where(l=>l.Contains(pattern))

:

ReadLines和ReadAllLines方法的区别如下: 在ReadLines中,可以开始枚举字符串集合 全部藏品归还;使用ReadAllLines时,必须 等待返回整个字符串数组,然后才能访问 阵列。因此,当您处理非常大的文件时, 读线可以更高效


你可以这样做。如果你想返回所有带有“england”的行,你需要创建一个字符串列表并返回它

foreach(string line in File.ReadAllLines("FILEPATH"))
    {
    if(line.contains("england"))
       return line;
    }
    return string.empty;
1) 读所有的行

2) 创建字符串列表以填充匹配项

3) 循环或linq行,并使用IndexOf(matchstring)>-1查找匹配项


4) 返回结果

感谢您提供的解决方案,这里我面临的一个挑战是如何在“Console.Writeline();”中写入内容,以便在控制台上获得与所需字符串匹配的所有行。那么,向控制台写入内容的挑战是什么呢?您好,感谢您提供解决方案,我还想问她一件事,我可以使用Hashset count方法拥有唯一的行和唯一的计数吗。我已尝试此代码,但它不起作用:
foreach(string line in File.ReadAllLines("FILEPATH"))
    {
    if(line.contains("england"))
       return line;
    }
    return string.empty;