Я не знаю, как выглядят все ваши строки формата, но если ваши строки формата когда-либо попадают в String.Format (), вам уже нужно экранировать символы {и} (удваивая их). Как насчет использования регулярного выражения. Начнем с простого, который также удваивает символы {и}:
string DisplayFormat(string format) {
Regex rx = new Regex(@"\{\d+:([^}]+)}|\{\{|}}");
return rx.Replace(format, delegate(Match m) {
if (m.Value == "{{") {
return "{";
} else if (m.Value == "}}") {
return "}";
} else {
return m.Groups[1].Value;
}
});
}
Обратите внимание, что приведенный выше код придется изменить, если строки формата содержат последовательности, подобные {0}
, и вы хотите, чтобы с ними было что-то особенное.