按行ID清除txt文件的一行
本文关键字:一行 ID 清除 txt 文件 按行 | 更新日期: 2023-09-27 18:24:45
我到处寻找答案,但在任何地方都找不到。我需要能够通过行中的最后一个整数(ID号)从txt文件中清除一行,但我不知道如何做到这一点。请帮忙?基本上,我想我需要找到最后一个整数,如果它不等于输入,那么它会移动到下一行,直到找到正确的整数。然后这条线就被清除了。以下是我的一些显然不起作用的代码:
public static void TicID(CommandArgs args)
{
if (args.Parameters.Count == 1)
{
if (i == 1)
{
try
{
string idToDelete = args.Parameters[0];
StreamReader idreader = new StreamReader("Tickets.txt");
StreamWriter iddeleter = new StreamWriter("Tickets.txt");
string id = Convert.ToString(idreader.Read());
string line = null;
while (idreader.Peek() >= 0)
{
if (String.Compare(id, idToDelete) == 0)
{
iddeleter.WriteLine(line);
}
else
{
idreader.ReadLine();
}
}
}
删除行最直接的方法是写入不应该删除的行:
var idToDelete = "1";
var path = @"C:'Temp'Test.txt";
var lines = File.ReadAllLines(path);
using (var writer = new StreamWriter(path, false)) {
for (var i = 0; i < lines.Length; i++) {
var line = lines[i];
//assuming it's a CSV file
var cols = line.Split(',');
var id = cols[cols.Length - 1];
if (id != idToDelete) {
writer.WriteLine(line);
}
}
}
这是LINQ方式:
var lines = from line in File.ReadAllLines(path)
let cols = line.Split(',')
let id = cols[cols.Length - 1]
where id != idToDelete
select line;
File.WriteAllLines(path, lines);
创建一个StreamReader对象,并使用StreamReader的实例方法ReadLine()逐行读取到字符串数组或类似的数组中,现在在文本数组中找到您选择的行并将其删除。
重要提示:
do { /*see description above*/ } while (streamReader.Peak() != -1);