我已经全神贯注地寻找答案,但我无法在任何地方找到它。我需要能够通过行中的最后一个整数(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();
}
}
}
答案 0 :(得分:0)
创建一个StreamReader对象,并使用StreamReader的实例方法ReadLine()逐行读入字符串数组或类似内容,然后在文本数组中找到您选择的行并删除它。
重要提示:
do { /*see description above*/ } while (streamReader.Peak() != -1);
答案 1 :(得分:0)
删除行的最直接方法是编写不应删除的行:
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);