如何在文本文档中找到行后覆盖下一行

时间:2016-08-28 23:30:26

标签: c#

这里我想要一件事,所以我从某个值中取出行,在文本文档中找到它,现在我想要覆盖X而不是找到的行,但是在找到的行之后的下一行

所以如果内容是:

line1
line2
line3
line4

以及如果string text = "line2";使用此代码:

using System;
using System.IO;

namespace _03_0
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "line2";

            string text = File.ReadAllText("doc.txt"); 
            text = text.Replace(text, "X"); 
            File.WriteAllText("doc.txt", text);          
        }
    }
}

我有这个结果:

line1
X
line3
line4

但我想要这个结果:

line1
line2 
X
line4

3 个答案:

答案 0 :(得分:0)

你必须迭代你的线 找到你的专线后,请阅读下一行并进行更改。

var Query1 = from o in Orders
                group o by o.CustomerId
                into grp
                select new {CustomerId = grp.Key, OrderCount = grp.Count()};

这将添加所有行,并将下一行更改为您想要的行,然后添加所有其余行 确保你在最后写文件。

答案 1 :(得分:0)

您可以找到该行的索引来更改其后的行:

string[] lines = File.ReadAllLines("doc.txt");
int i = Array.IndexOf(lines, "line2");
if (i >= 0 && i < lines.Length - 1)
{
    lines[i + 1] = "X";
    File.WriteAllLines("doc.txt", lines);
}

答案 2 :(得分:0)

我建议使用Regular Expressions

string filePath = @"doc.txt";
string myStr = "line2";
string content = File.ReadAllText(filePath);
string pattern = string.Format(@"(?<={0}\r\n).+?(?=\r\n)", myStr);
Regex r = new Regex(pattern);
File.WriteAllText(filePath, r.Replace(content, "X"));

P.S:您需要导入RegularExpressions命名空间:

using System.Text.RegularExpressions;

希望有所帮助:)

附注您不能使用相同的变量名称(text)两次。