gpt4 book ai didi

c# - 有条件地从文本文件中删除最后一行

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:04 24 4
gpt4 key购买 nike

我昨天在 SO 上发布了这个,我收到了一个很好的答案,但我需要改变它,我不知道如何。

这是我的 original question :


我需要从文本文件中删除最后一行。我知道如何在 C# 中打开和保存文本文件,但我如何去除文本文件的最后一行?

文本文件总是有不同的大小(有些有 80 行,有些有 20 行)。

怎么做?


这是别人给我的代码(效果很好)

//Delete the last line from the file.  This line could be 8174, 10000, or anything.  This is from SO
string tempfile = @"C:\junk_temp.txt";

using (StreamReader reader2 = new StreamReader(newfilename))
{
using (StreamWriter writer2 = new StreamWriter(tempfile))
{
string line = reader2.ReadLine();

while (!reader2.EndOfStream)
{
writer2.WriteLine(line);
line = reader2.ReadLine();
} // by reading ahead, will not write last line to file
}
}

File.Delete(newfilename);
File.Move(tempfile, newfilename);
File.Delete(tempfile);

如果文本文件的最后一行是 4 位或 5 位数字字符串(例如 8001 或 99999),我该如何将其更改为仅删除文本文件的最后一行。

如果是除此之外的任何内容,例如 %,那么我不想删除最后一行。

有人可以修改上面的代码来为我做这个吗?

最佳答案

要保持与当前代码中相同的逻辑,您可以执行以下操作

        //Delete the last line from the file.  This line could be 8174, 10000, or anything.  This is from SO 
string tempfile = @"C:\junk_temp.txt";

using (StreamReader reader2 = new StreamReader(newfilename))
{
using (StreamWriter writer2 = new StreamWriter(tempfile))
{
string line = reader2.ReadLine();

while (!reader2.EndOfStream)
{
writer2.WriteLine(line);
line = reader2.ReadLine();
} // by reading ahead, will not write last line to file

// If the last line read does not match your condition
// we write it to the new file
if (!Regex.IsMatch(line, @"^\d{4,5}$"))
{
writer2.WriteLine(line);
}
}
}

File.Delete(newfilename);
File.Move(tempfile, newfilename);
File.Delete(tempfile);

关于c# - 有条件地从文本文件中删除最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885436/

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