Замена текста в строке файла
допустим есть некоторый файл ,этот файл считывается и записывается в массив , далее перебираем все строки ,и если есть нужная строка заменить ее на нужную , как избавиться от дублирования Replace вот код:
public const string oldPath = "/Logs" ;
public const string oldBatch = "/Packages/Batch";
public const string newPath = "/var/Logs";
public const string newBatch = "/Batch";
var currentSettings = new string[0];
if (File.Exists(_configFile))
{
OutputHelpers.WriteText("Current settings");
currentSettings = File.ReadAllLines(_configFile);
foreach (string line in currentSettings)
{
string newline = line.Replace(oldPath, newPath).Replace(oldBatch,newBatch)
}
Ответы (1 шт):
Автор решения: Pavel Seletkov
→ Ссылка
Пример работы в контексте отдельно взятой строки
const string oldPath = "/Logs";
const string oldBatch = "/Packages/Batch";
const string newPath = "/var/Logs";
const string newBatch = "/Batch";
String newline= "/Logs /var/Logs";
var pathDictionary = new Dictionary<string, string>(
StringComparer.OrdinalIgnoreCase) {
{newPath, newBatch},
{oldPath, oldBatch}
};
foreach (var item in pathDictionary)
{
newline= newline.Replace(item.Key, item.Value);
}
Хочу заметить ошибку что сперва стоит обработать newPath, а затем oldPath... В противном случае "/Logs /var/Logs" превратится в "/Packages/Batch /var/Packages/Batch", а не в ожидаемое "/Packages/Batch /Batch"