Найти и удалить символы в строке

Моя программа считывает значения ключа реестра и объединяет эти значения с путем установки. Я также прочитал путь установки из реестра.

т.е. String dllInstpath = installPath + rKey что равно: C:\Program Files (x86)\NSi\AutoStore Workflow 6\HpOXPdCaptureRes.dll

Я тогда использую FileVersionInfo в строке выше, чтобы получить информацию о файле HpOXPdCaptureRes.dll из его пути установки и запишите все значения в блокнот.

Моя проблема в том, что ИСТИННОЕ имя dll не имеет "Res" в имени файла. В реестре есть только имя файла с "Res" в имени файла. Что мне нужно сделать, это прочитать из текстового файла и найти все "Res" и удалить их из строки текста в файле блокнота.

Таким образом, результат должен выглядеть следующим образом:

Текущий: HpOXPdCaptureRes.dll

Новое: HpOXPdCapture.dll

Я прочитал в Интернете, и я вижу лучший способ сделать это, чтобы использовать ReadAllLines а также WriteAllLines, Однако я не уверен, как реализовать поиск и замену. Я видел много примеров того, как удалить пробелы, недопустимые символы и т. Д., Но я не смог найти пример того, что мне нужно.

Резюме:

  • Читать текстовый файл
  • хорошо Res во всех строках текста и удалить
  • Сохранить текущий текстовый файл, т.е. удалить Res и закройте файл

Любая помощь с благодарностью.

Спасибо!

4 ответа

Решение

Ты можешь использовать File.ReadAllLines а также File.WriteAllLines,

Пример:

Прочитайте все строки и замените нужное значение в каждой строке, затем снова напишите строки

File.WriteAllLines("textFilePath",File.ReadAllLines("textFilePath").Select(line => line.Replace("Res.dll", ".dll")));

Просто откройте файл и прочитайте все строки, используя File.ReadAllLines. Тогда используйте Replace удалить Res:

string[] lines = File.ReadAllLines("yourFileName");
var output = lines.Select(x => x.Replace("Res.dll", ".dll")).ToArray();

Чтобы потом сохранить их обратно, вы можете использовать File.WriteAllLines:

File.WriteAllLines("yourFileName", output);

Прочитайте все из файла, замените все вхождения 'res' и запишите в файл:

        String filename = "fileName";

        StreamReader sr = new StreamReader(filename);
        String content = sr.ReadToEnd();
        sr.Close();

        StreamWriter sw = new StreamWriter(filename);
        sw.Write(content.Replace("res", ""));
        sw.Close();

Если строка, которую вы заменяете, гарантированно будет уникальной в строке - например, "res.dll" в конце строки - вы можете использовать Replace метод String класс для замены:

List<string> lines = File.ReadAllLines(sourceFile);
lines = lines.select(l => l.Replace("res.dll", ".dll").ToList();

Или, если чувствительность к регистру является проблемой:

lines = lines.Select(l => l.Substring(l.Length - 7).ToLower() == "res.dll" ? l.Substring(0, l.Length - 7) + ".dll" : l).ToList();

В более сложных случаях вам может понадобиться использовать регулярное выражение, чтобы идентифицировать раздел строки для замены. Или вы можете разделить строку int path и filename, изменить имя файла и соединить его вместе.

Другие вопросы по тегам