[英]how to get 10 lines below from a line in text file in c#
我正在阅读一个巨大的文本文件,如下所示。现在想要的是,如果我遇到一个特定的词,比如test:
在这里,我将从该行将值推送到数据库中,其中一个值是通过连接 10 个后续行的值来实现的.所以我想获得 10 行,并使用File. Readalllines
将其存储到内存中File. Readalllines
File. Readalllines
或任何其他机制。我将如何实现它。 File. Readalllines
目前,我正在将整个文本文件加载到File.Readalllines
,这使得应用程序非常慢。
using (FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string s = String.Empty;
while ((s = sr.ReadLine()) != null)
{
if (s.Contains("test:"))
{
//
}
}
}
编辑我正在研究支出者的答案,这里的一个转折是假设我有 10000 行以test:
开头test:
并且每一行都有ID
,我正在插入基于一个 ID 的行,就像 ID==ID 存储在字典中一样,那么我必须存储成功的 10行总是不是前 10 行,所以怎么做?
编辑@spender 我这样做就像SkipWhile(line => (!line.Contains("ADD GTRX:") && !line.Contains(dict.CellId.ToString()))).Take(10);
但根本没有运气
编辑@spender 最后我做到了我必须移动括号所以我所做的完整代码如下所示,我也删除了空行
var linesOfInterest = File.ReadLines(filename)
.SkipWhile(line => !line.Contains("test:")).SkipWhile(line => !line.Contains(dictId.ToString())).Take(10);
var output = string.Join(Environment.NewLine, linesOfInterest).Trim().Split(';').Where(arg => !string.IsNullOrWhiteSpace(arg)).ToArray();
你很棒,祝你有美好的一天
File.ReadLines
是您的朋友。 它为您提供了一个IEnumerable<string>
,它可以懒惰地从文本文件中返回行(即文件永远不会完全加载到内存中)。 从那里你可以很好地 LINQ。
var linesOfInterest = File.ReadLines(filePath)
.SkipWhile(line => !line.Contains(searchTerm))
.Take(10);
var output = string.Join(Environment.NewLine, linesOfInterest);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.