Заголовок говорит сам за себя, у меня есть файл с именем test.txt
со следующим содержимым:
Hello from th [BACK]e
This i [BACK]s line two.
Здесь [BACK]
- это просто видимое представление возврата. Таким образом, i [BACK]s
будет означать is
. Поскольку после space
и i
.
реализовано обратное пространство, то, по сути, при нажатии кнопки я должен иметь доступ к этому файлу и удалить ВСЕ строки, содержащие слово [BACK]
- 1. -1 реализовано, потому что [BACK]
означает возврат на одну позицию и используется для удаления последней строки перед словом [BACK]
.
РЕДАКТИРОВАТЬ:
На этот раз я заменил [BACK]
на [SDRWUE49CDKAS]
. Просто чтобы сделать его уникальной строкой. Я также проверил на другом файле. На этот раз .html
со следующим содержимым:
Alpha, Brav [SDRWUE49CDKAS]o, Charlie, Dr [SDRWUE49CDKAS][SDRWUE49CDKAS]elta, Echo.
// ^^Implementing "backspace" ^^Here doing it double because we made a mistake in spelling "Delta"
//These sentences should be Alpha, Bravo, Charlie, Delta, Echo
Сделал некоторые эксперименты и протестировал его с этим кодом:
string s = File.ReadAllText(path2html);
string line = "";
string contents = File.ReadAllText(path2html);
if (contents.Contains("[SDRWUE49CDKAS]"))
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(path2html);
s = s.Remove(s.LastIndexOf(line + "[SDRWUE49CDKAS]") - 2, 15);
sw.WriteLine(s);
sw.Close();
}
Отредактированный код выше даст мне вывод на самом деле удаляя [SDRWUE49CDKAS]
, но не совсем так, как я хотел:
Alpha, BraS]o, Charlie, DS]elta, Echo.
Это действительно вызвало некоторую путаницу с тестированием. И также не говоря уже о том, что мне пришлось запускать этот код 3 раза, потому что у нас было 3 x [SDRWUE49CDKAS]
. Так что все oop пойдет на пользу. Я проверил кучу подобных проблем в сети, но не смог найти работающую. Я пытаюсь проверить этот тоже. Но он использует StreamReader
и StreamWriter
одновременно. Или, может быть, я должен сделать копию оригинала и создать временный файл?