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