gpt4 book ai didi

C# 如何只追加文本文件的末尾和特定位置?

转载 作者:行者123 更新时间:2023-11-30 14:25:06 24 4
gpt4 key购买 nike

我想将状态从 OK 更改为 NG,

IPen ID     Datetime                                Status
50 Wednesday, September 21, 2016 08:56:45 OK
IPen ID Datetime Status
50 Wednesday, September 21, 2016 08:56:51 OK

这是我的 report.txt 文件。我的期望是我们如何使用 C# 删除最后一行?

IPen ID     Datetime                                Status
50 Wednesday, September 21, 2016 08:56:51 OK

以及如何将 OK 状态更改附加到 NG 状态?我希望的结果是这样的:

IPen ID     Datetime                                Status
50 Wednesday, September 21, 2016 08:56:45 NG

这是我的代码:

var lines = File.ReadAllLines(Fullpath);
File.WriteAllLines(Fullpath, lines.Take(lines.Length - 1).ToArray());
DisplayData(MessageType.Incoming, lines[lines.Length - 1]);

var text = new StringBuilder();

foreach (string s in File.ReadAllLines(Fullpath))
{
text.AppendLine(s.Replace("OK", "NG"));
}

using (var file = new StreamWriter(File.Create(Fullpath)))
{
file.Write(text.ToString());
}

此代码会将所有“OK”更改附加到“NG”。不像我想要的那样,但我想删除最后一个结果,只将最后两个结果从“OK”更改为“NG”,而不是将所有 OK 更改为 NG。对我有什么建议或解决方案吗?感谢关注和帮助。

最佳答案

由于您已经将整个文件读入内存,您可以将其转换为列表,从末尾删除,然后反向迭代以更新最后两个条目:

var lines = File.ReadAllLines(Fullpath).ToList();

// Remove as many lines as you'd like from the end
if (lines.Count > 2)
{
lines.RemoveRange(lines.Count - 2, 2);
}

// Iterate backwards through the list until we've updated 2 (or more or less) lines
var linesUpdated = 0;

for (var i = lines.Count - 1; i >= 0 && linesUpdated < 2; i--)
{
if (lines[i].Contains("OK"))
{
lines[i] = lines[i].Replace("OK", "NG");
linesUpdated++;
}
}

File.WriteAllLines(Fullpath, lines.ToArray());

关于C# 如何只追加文本文件的末尾和特定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com