Я думаю, что эти строки всегда будут иметь одинаковое количество параметров, даже если они могут измениться. Например, сегодня template
является "Hi {name}"
, а завтра может быть "Hello {name}"
.
Короткий ответ: Нет, вы не можете делать то, что вы предложили.
Альтернатива 1: используйте метод string.Format .
Вы можете сохранить в своей базе данных что-то вроде этого:
"Hi {0}"
Затем, когда вы извлекаете шаблон строки из db, вы можете написать:
var template = "Hi {0}"; //retrieved from db
var name = "Joe";
var result = string.Format(template, name);
//now result is "Hi Joe"
С двумя параметрами:
var name2a = "Mike";
var name2b = "John";
var template2 = "Hi {0} and {1}!"; //retrieved from db
var result2 = string.Format(template2, name2a, name2b);
//now result2 is "Hi Mike and John!"
Альтернатива 2: используйте заполнитель.
Вы можете сохранить в своем что-то вроде этого:
"Hi {name}"
Затем, когда вы извлекаете шаблон строки из db, вы можете написать:
var template = "Hi {name}"; //retrieved from db
var name = "Joe";
var result = template.Replace("{name}", name);
//now result is "Hi Joe"
С тремя параметрами:
var name2a = "Mike";
var name2b = "John";
var template2 = "Hi {name2a} and {name2b}!"; //retrieved from db
var result2 = template2
.Replace("{name2a}", name2a)
.Replace("{name2b}", name2b);
//now result2 is "Hi Mike and John!"
Обратите внимание, на какой маркер вы выбираете для своих заполнителей. Здесь я использовал окружающие фигурные скобки {}
. Вы должны найти что-то, что вряд ли вызовет столкновения с остальной частью вашего текста. И это полностью зависит от вашего контекста.