Заменить строку в файле, содержащем определенную строку w/ C#

У меня есть файл конфигурации, где каждая строка представляет собой комбинацию параметров и значений. Я не знаю, какое значение установлено, однако я знаю имя параметра, где мне нужно обновить всю строку. Я нашел множество примеров использования файла.ReadAllText.Заменить и файл.WriteAllText, но они заменяют определенную строку другой строкой.

Пример Строки Настройки:

Server.ServerType=official

Мне нужно найти строку, которая содержит » Server.ServerType= «и в этом примере я бы заменил его на» Server.ServerType=modded».

Каков был бы наиболее упрощенный подход для этого с использованием C#?

1 ответ

  1. Разделите линию на знак»=», затем протестируйте первый элемент и измените второй элемент при необходимости, затем соедините, заменив знак»=». Я использовал переключатель, предполагающий, что у вас будет несколько тестов (проще, чем много IF / THENs):

      string line = ReadLine();
      string[] parts = line.Split('=');
      switch(parts[0]){
          case "Server.ServerType":
             parts[1] = "modded";
             break;
             ....
      }
      string newline = String.Join("=",parts);
      WriteLine(newline);
    

    При многократном изменении значений можно использовать:

     Dictionary<string,string> values = new Dictionary<string,string>
     string[] parts = Readline().Split('=');
     values.Add(parts[0],parts[1]);
     values["Server.ServerType"] = "modded";
     ....
     foreach(KeyValuePair<string,string> kvp in values){
        WriteLine(kvp.Key+"="+kvp.Value);
     }