抓取两行之间的文本

Grab text between two lines

我刚刚开始学习,在处理文件时遇到了问题。 我有一个方法有两个输入,一个在我想要的行的开头(lineStart),另一个在行的结尾(lineEnd) 我需要在这两个数字之间提取并写入文件的方法。

ex ) lineStart = 20 , lineEnd = 90, in output 必须是 txt 文件的 = 21-89 行。

          string[] lines = File.ReadAllLines(@"");

        int lineStart = 0;
        foreach (string line0 in lines)
        {
            lineStart++;
            if (line0.IndexOf("target1") > -1)
            {
                Console.Write(lineStart + "\n");
            }
        }
           int lineEnd = 0;

         foreach (string line1 in lines)
            {
                lineEnd++;
                if (line1.IndexOf("target2") > -1)
                {
                    Console.Write(lineEnd);
                }
            }

        // method grabText(lineStart,lineEnd){}

enter code here

一行代码而已

string[] lines = File.ReadLines(@"").Skip(lineStart).Take(lineEnd-lineStart);

另请注意,我使用的是 ReadLines 而不是 ReadAllLines。第一个不会将所有内容加载到内存中。
不太清楚线条的边界是什么,但当然很容易调整计算

如果您的文本文件很大,请不要将其读入内存。也不找索引,一行一行处理:

bool writing = false;

using var sw = File.CreateText(@"C:\some\path\to.txt");

foreach(var line in File.ReadLines(...)){ //don't use ReadAllInes, use ReadLines - it's incremental and burns little memory

  if(!writing && line.Contains("target1")){
    writing = true; //start writing
    continue; //don't write this line
  }

  if(writing){
    if(line.Contains("target2"))
      break; //exit loop without writing this line
    sw.WriteLine(line);
  }
}