当前位置: 首页 > 编程语言 > C#

在文本文件中搜索,直到特定字符串分享

时间:2023-04-11 00:13:51 C#

C#学习教程:在文本文件中搜索直到特定的字符串目标是忽略该字符串之后的所有内容。我当前的代码读取整个文本文件并返回一个可枚举的结果文件名,其中找到了一个术语。varsearchResults=files.Where(file=>File.ReadAllText(file.FullName).Contains(searchTerm)).Select(file=>file.FullName);是否可以合并忽略该特定字符串之后的所有行?性能非常重要,因为有成千上万的文件。您可以将查询更改为:varsearchResults=files.Where(file=>File.ReadLines(file.FullName).Any(line=>line.Contains(searchTerm)).Select(file=>file.FullName));您可以使用File.ReadLines而不是使用File.ReadLines,它会被延迟评估并在满足条件时停止读取。https://msdn.microsoft.com/en-us/library/vstudio/dd383503(v=vs.100).aspx要加快速度,您还可以使用并行LINQ:varsearchResults=files.AsParallel().Where(文件=>File.ReadLines(file.FullName).Any(line=>line.Contains(searchTerm)).Select(file=>file.FullName));您可以逐行读取文件并在找到值时将其关闭:staticstring[]SearchFiles(string[]filesSrc,stringsearchTerm){Listresult=newList();字符串行="";StreamReader阅读器=null;for(inti=0;ianduseit:string[]files=SearchFiles(yourfiles[],"searchTerm");根据您的需要,您可以将File[]传递给此方法,然后使用完整路径获取字符串值,但您没有为File类提供示例,而且您不知道您的类实际是什么样子,很难实现它。PS使用LINQ是另一种可能的解决方案,也是一个很好的解决方案(不是提到它只有1-2行代码。简单的性能测试表明,LINQ在这种情况下只减慢了10-20%,所以坚持使用它可能会更好。每个人都有用,需要更多了解C#学习教程,希望大家多多关注,本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如有转载,请注明出处: