C# 在文本文件中搜索某个单词,然后打印该单词所在的行
我想在文本文件中搜索一个特定的关键字,比如companyName 程序将搜索该单词,然后打印该单词所在的行,同时也将打印该行下方的行。它应该对单词所在的每一行都这样做。即打印所有具有companyName及其下一行的行。(理想情况下,这将写入.txt文件) --->程序打印 公司名称:乐购 地址:斯特恩街31号(紧靠下面的那条线) --编辑-- 以下是我目前正在使用的代码,供其他可能觉得有用的人使用:C# 在文本文件中搜索某个单词,然后打印该单词所在的行,c#,C#,我想在文本文件中搜索一个特定的关键字,比如companyName 程序将搜索该单词,然后打印该单词所在的行,同时也将打印该行下方的行。它应该对单词所在的每一行都这样做。即打印所有具有companyName及其下一行的行。(理想情况下,这将写入.txt文件) --->程序打印 公司名称:乐购 地址:斯特恩街31号(紧靠下面的那条线) --编辑-- 以下是我目前正在使用的代码,供其他可能觉得有用的人使用: static void Main(string[] args) { v
static void Main(string[] args)
{
var sb = new StringBuilder();
var lines = File.ReadAllLines(@"C:\file.txt");
for (int i=0; i<lines.Length; i++)
{
var line = lines[i];
if (line.IndexOf("companyName", StringComparison.CurrentCultureIgnoreCase) >= 0)
{
var nextLine = lines[i + 1];
sb.AppendLine(line);
sb.AppendLine(nextLine);
}
}
File.WriteAllText(@"C:\out.txt", sb.ToString());
static void Main(字符串[]args)
{
var sb=新的StringBuilder();
var lines=File.ReadAllLines(@“C:\File.txt”);
对于(int i=0;i=0)
{
var nextLine=行[i+1];
给某人加上一行(一行);
某人(下一行);
}
}
writealText(@“C:\out.txt”,sb.ToString());
}也许是这样的
using (var sr = new StreamReader(inFile))
using (var sw = new StreamWriter(OutFile))
while (!sr.EndOfStream)
{
var line1 = sr.ReadLine();
if (line1.IndexOf(SearchString, StringComparison.OrdinalIgnoreCase) >= 0)
continue;
sw.WriteLine(line1);
sw.WriteLine(sr.ReadLine());
}
免责声明:未测试,无错误检查,我不对您使用此代码伤害的人负责您可以尝试以下方法,其中变量filePath包含文件路径,关键字包含您要查找的字符串:
var keyWord = "companyName";
var hasKeyword = false;
foreach (var line in System.IO.File.ReadAllLines(filePath))
{
if (line.Contains(keyWord))
{
Console.WriteLine(line);
hasKeyword = true;
continue;
}
if (hasKeyword)
{
Console.WriteLine(line);
hasKeyword = false;
}
}
你有一些代码,你可以告诉我们你已经尝试过。这将帮助我们引导你。这是非常基本的东西。尝试搜索您需要的内容并对其进行编码。如果连续两行包含该单词,您是否也应该在第二行之后显示下一行?谢谢大家。我没有注意到重复的,任命!我该如何接受一个最好的答案呢?是的,当然,为什么不呢?因为
File.ReadAllLines(…)
或者File.ReadLines(…)
,如果你不想全部阅读的话once@stuartd如果它是一个5千兆的文件:)这是一个罕见的情况,但一个有效的点。“当您使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;当您使用ReadAllLines时,必须等待整个字符串数组返回后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可以更有效。”-@stuartd谢谢你,说实话,我刚刚从另一个问题的屏幕上看到了密码。尽管它在阅读和写作方面确实能巧妙地配合和平餐的方式。另外,如果你想喜欢spead,你可以调整buffersize和高级文件选项以提高性能和其他花招。对于明显与OPS问题无关的问题,您不需要添加continue;在第一个条件中,此代码可以工作。是的,您是对的,谢谢:)