在文本文件中搜索单词,然后将其打印在行中

时间:2018-06-20 09:55:49

标签: c#

我正在寻找一个特定关键字的文本文件,例如companyName。

程序将搜索单词,然后打印该单词所在的行,然后也将打印该单词下方的行。它应该对单词所在的每一行都执行此操作。 I.E打印具有companyName及其下一行的所有行。 (最好将其写入.txt文件)

---> 程序打印

companyName:Tesco

地址:斯特恩街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());

}

2 个答案:

答案 0 :(得分:0)

也许是这样吗?

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());
      }

免责声明:未经测试,不进行错误检查,对于您致残的人或对此代码造成伤害的人,我不承担任何责任

答案 1 :(得分:0)

您可以尝试以下方法,其中变量filePath包含文件路径,而keyWord包含要查找的字符串:

        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;
            }
        }