2016-07-07 3 views
-1

В приложении я загружаю строки из конфигурации этого формата stackoverflow.com?questionId={0}. Очевидно, что они заполнены во время выполнения и используются в строках запросов.Печать строки типа «Hello {0}»

Я хочу войти эти строки при запуске с помощью метода:

void log(string message, params object[] vars) 
     { 
      string s = String.Format(message, vars); 
      Console.WriteLine(s); 
     } 

Однако, как и следовало ожидать String.Format выбрасывает исключение, потому что вызов: log(String.Format("Adding new feed '{0}'", "stackoverflow.com?questionId={0}")) - String.Format пытается заменить {0} внутри «(Журнал)».

Есть ли простой способ избежать символов {, чтобы замена не была предпринята?

+1

дважды: '{0}': '{{0}}' –

+1

Но @DmitryBychenko то, что разрушает фактический _usage_ ... они должны быть заменены, это проблема их регистрации. –

+1

ах, я вижу дилемму. Вы не можете иметь это в обоих направлениях. Вам может потребоваться перегрузка для вашего метода журнала, который не принимает 'params' и не вызывает' string.format'. Проголосовало за повторное открытие, так как вы не спрашиваете «как я цитирую заполнители», но «как я иногда притворяюсь, что они не заполнители»? – hometoast

ответ

1

Я нашел два ответа на этот вопрос.

Во-первых, я бежал фигурные скобки, выполнив следующие действия:

log(String.Format("Adding new feed '{0}'", feedStr.Replace("{", "{{").Replace("}", "}}")));

Это прекрасно работает.

Во-вторых, как было предложено MartinBrown я понял, что я просто не мог сделать:

log("Adding new feed '{0}'", feedStr);