这里我想要一件事,所以我从某个值中取出行,在文本文档中找到它,现在我想要覆盖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
答案 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
)两次。