C# 在文本文件中搜索某个单词,然后打印该单词所在的行

C# 在文本文件中搜索某个单词,然后打印该单词所在的行,c#,C#,我想在文本文件中搜索一个特定的关键字,比如companyName 程序将搜索该单词,然后打印该单词所在的行,同时也将打印该行下方的行。它应该对单词所在的每一行都这样做。即打印所有具有companyName及其下一行的行。(理想情况下,这将写入.txt文件) --->程序打印 公司名称:乐购 地址:斯特恩街31号(紧靠下面的那条线) --编辑-- 以下是我目前正在使用的代码,供其他可能觉得有用的人使用: static void Main(string[] args) { v

我想在文本文件中搜索一个特定的关键字,比如companyName

程序将搜索该单词,然后打印该单词所在的行,同时也将打印该行下方的行。它应该对单词所在的每一行都这样做。即打印所有具有companyName及其下一行的行。(理想情况下,这将写入.txt文件)

--->程序打印

公司名称:乐购

地址:斯特恩街31号(紧靠下面的那条线)

--编辑--

以下是我目前正在使用的代码,供其他可能觉得有用的人使用:

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;在第一个条件中,此代码可以工作。是的,您是对的,谢谢:)