2012-02-15 3 views
-1

Я все рассмотрел для ответа на этот вопрос, но я не могу найти его нигде. Мне нужно очистить строку из 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

Вы знаете, как читать файл? вы знаете, как манипулировать струнами? вы знаете, как писать в файл? похоже, что вы ничего не делали до сих пор, но спрашиваете «как», не ожидайте, что мы сделаем для вас работу. Вы можете * atleast * показать нам, как выглядят ваши данные. – Shai

+0

Извините, я намеревался написать это, но сейчас я нахожусь подальше от своего компьютера (делая это на своем телефоне). Когда я вернусь, я обещаю поместить некоторые данные и информацию. Извини за это. – Spectrewiz

ответ

0

Создать объект StreamReader и читать построчно в массив строки или что-то вроде этого с помощью метода экземпляра ReadLine StreamReader (в), и теперь найти свою линию выберите в своем текстовом массиве и удалите его.

Важное примечание:

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

Так что, в основном, у меня есть читатель, храня все информацию, найдите ту, которую ищут, а затем перепишите всю информацию. Проблема в том, что я не знаю, как работать с массивами, но в настоящее время я изучаю учебные пособия. – Spectrewiz

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

+0

Это на самом деле не сработало для меня: [извините: [Не было никаких ошибок, но это просто ничего не делало. – Spectrewiz

+0

@Spectrewiz: Он работает, но вы не сказали, как выглядят ваши данные. Это CSV-файл, который имеет разделитель, имеет все строки с одинаковым количеством столбцов и т. Д.? Вы можете использовать отладчик, чтобы узнать, почему мой код не находит ваш идентификатор. –

Смежные вопросы