2012-02-15 60 views
-1

我已经找遍了这个答案,但我找不到它在任何地方。我需要能够清除行中最后一个整数(ID号)从txt文件中的一行,但我不知道该怎么做。请帮忙?基本上我在想,我需要找到最后一个整数,如果它不等于输入,那么它会移动到下一行,直到它找到正确的整数。然后,该行被清除。下面是我的一些代码,显然是行不通的:通过行清除一个txt文件的一行ID

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(); 
         } 
        } 
       } 
+3

你知道如何阅读文件吗?你知道如何操作字符串吗?你知道如何写入文件吗?好像你到目前为止没有做任何事情,但问“如何”,不要指望我们为你做这项工作。你可以*至少*向我们展示你的数据是怎样的。 – Shai 2012-02-15 12:13:09

+0

对不起,我的意思是写这个,但我实际上远离我的电脑(在我的手机上这样做)当我回来时,我保证会把我的一些数据和信息。对于那个很抱歉。 – Spectrewiz 2012-02-15 14:05:23

回答

0

创建StreamReader对象和逐行读取到字符串数组或类似的东西使用的StreamReader的实例方法的ReadLine(),现在发现你的线在你的文本数组中选择并删除它。

重要提示:

do { /*see description above*/ } while (streamReader.Peak() != -1); 
+0

所以基本上,我只需要读者阅读,存储所有信息,找到正在查找的信息,然后重写所有信息。问题是,我不知道如何处理数组,但我现在正在查找相关教程。 – Spectrewiz 2012-02-16 01:51:09

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); 
+0

从我的手机看起来不错,当我回家时,我会尝试它,如果它的工作,我不会打扰上传我的一些代码到原来的问题:D谢谢回答:] – Spectrewiz 2012-02-15 14:12:45

+0

这实际上并没有为我工作: [对不起:[没有错误,但它没有做任何事情。 – Spectrewiz 2012-02-16 01:46:45

+0

@Spectrewiz:它可以工作,但你没有告诉你使用什么样的数据。它是一个CSV文件,它具有哪个分隔符,所有行的列数都是相同的?您可以使用调试器来查看我的代码为什么找不到您的ID。 – 2012-02-16 08:16:28