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