Допустим бывает так, что нужно в шаблоне подставить значения в переменные. Например есть такой шаблон, а вам нужно подставить данные:

Код:
Уважаем[a] госпо[b] [name], прошу прийти [date], в [time] на собеседование.

Вот код, который заменяет в шаблоне переменные на значения

Код:
// String strTemplate = данные, т.е. шаблон,
private String Replace(String strTemplate, Dictionary<String, String> dicData) {
  StringBuilder stbData = new StringBuilder(strTemplate); // Для изменяемой строки
  foreach (KeyValuePair<String, String> item in dicData)
    stbData.Replace(item.Key, item.Value); // Ищем по ключу item.Key - ключ это переменная, заменяем на значение item.Value

  return stbData.ToString();  // Возвращаем изменённую строку
}

Пример использования:

Код:
String strData = "Уважаем[a] госпо[b] [name], прошу прийти [date], в [time] на собеседование.";
Dictionary<String, String> dict = new Dictionary<String, String>();
dict.Add("[a]", "ая");
dict.Add("[b]", "жа");
dict.Add("[name]", "Анна Иванова Шишкова");
dict.Add("[date]", "01.10.2021");
dict.Add("[time]", "18:00");
String strRes = this.Replace(strData, dict);

Результат:

Код:
Уважаемая госпожа Анна Иванова Шишкова, прошу прийти 01.10.2021, в 18:00 на собеседование.