Как избежать фигурных скобок (фигурные скобки) в строке формата в .NET.

Как можно string.Format скобки при использовании string.Format . Например:

 String val = "1,2,3" String.Format(" foo {{0}}", val); 

Этот пример не генерирует исключение, но выводит строку foo {0}

Есть ли способ избежать скобок?

Для вывода foo {1, 2, 3} вам нужно сделать что-то вроде:

 string t = "1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); 

Чтобы вывести { вы используете {{ и вывести a } вы используете }} .

Да, чтобы вывести { в string.Format вы должны избежать этого как {{

Итак, это

 String val = "1,2,3"; String.Format(" foo {{{0}}}", val); 

выведет "foo {1,2,3}" .

НО вы должны знать о ошибке дизайна на C #, которая заключается в том, что, перейдя по вышеуказанной логике, вы предположили, что этот ниже код напечатает {24.00}

 int i = 24; string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00} 

Но это печатает {N}. Это связано с тем, что способ C # анализирует escape-последовательности и форматирует символы. Чтобы получить нужное значение в приведенном выше случае, вы должны использовать это вместо этого.

 String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00} 

Ссылки Статьи String.Format gottach и String Formatting FAQ

Почти готово! Управляющая последовательность для скобки {{ или }} поэтому для вашего примера вы будете использовать:

 string t = "1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); 

Вы можете использовать двойные открытые скобки и двойные закрывающие скобки, на которых будет отображаться только одна скобка.

Экранирование фигурных скобок И использование интерполяции строк делает интересную задачу. Вам нужно использовать четырехместные скобки, чтобы избежать синтаксического анализа интерполяции строк и синтаксического анализа string.format .

Скользящие скобки: интерполяция строк $ (“”) и String.Format

 string localVar = "dynamic"; string templateString = [email protected]"

{0}

this is my {localVar} template using a {{{{custom tag}}}}
"; string result = string.Format(templateString, "String Interpolation"); // OUTPUT:

String Interpolation

this is my dynamic template using a {custom tag}
 [TestMethod] public void BraceEscapingTest() { var result = String.Format("Foo {{0}}", "1,2,3"); //"1,2,3" is not parsed Assert.AreEqual("Foo {0}", result); result = String.Format("Foo {{{0}}}", "1,2,3"); Assert.AreEqual("Foo {1,2,3}", result); result = String.Format("Foo {0} {{bar}}", "1,2,3"); Assert.AreEqual("Foo 1,2,3 {bar}", result); result = String.Format("{{{0:N}}}", 24); //24 is not parsed, see @Guru Kara answer Assert.AreEqual("{N}", result); result = String.Format("{0}{1:N}{2}", "{", 24, "}"); Assert.AreEqual("{24.00}", result); result = String.Format("{{{0}}}", 24.ToString("N")); Assert.AreEqual("{24.00}", result); } 

Пришел здесь в поисках того, как строить json-строки ad-hoc (без сериализации classа / объекта) в C #. Другими словами, как избежать фигурных скобок и кавычек при использовании Interpolated Strings в C # и « verbatim string literals » (двойные кавычки с префиксом «@»), например …

 var json = [email protected]"{{""name"":""{name}""}}"; 

или вы можете использовать интерполяцию строк c #, как это (функция доступна на C # 6.0)

 var value = "1, 2, 3"; var output = $" foo {{{value}}}"; 

Для вывода foo {1, 2, 3} вам нужно сделать что-то вроде:

  string t = "1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); 

Чтобы вывести {{вы используете {{и вывести a}, вы используете}}.

Не используйте string.Format. В настоящее время существует лучший способ форматирования строки, которая более понятна.

  • Эквивалент Sprintf в Java
  • Форматирование десятичных знаков в R
  • Ограничьте два-два десятичных знака
  • iPhone: как получить символ местной валюты (т. е. «$» отменить «AU $»)
  • Как читать числа с запятой в виде десятичного разделителя?
  • Формат A TimeSpan с годами
  • Intellij reformat для сохранения файлов
  • форматируйте число с запятыми и десятичными знаками в C # (asp.net MVC3)
  • C # конвертировать int в строку с нулями заполнения?
  • строковый формат для intptr_t и uintptr_t
  • Как преобразовать текущую дату в строку в java?
  • Interesting Posts

    Unistalled C ++ Redistributables в Windows Vista

    Как переключить пользователя в окна шпатлевки

    Подсчитывать и выделять ключевые слова в фразах

    Как перезапустить композитор ткани без потери существующих данных?

    Перезагрузите мою видеокарту без перезагрузки?

    Есть ли альтернатива использованию intellipoint?

    Как создать магический квадрат с помощью Windows Forms?

    Каков ваш любимый инструмент профилирования (для C ++)

    Почему Windows использует обратную косую черту для путей и косые черты Unix?

    Что такое магическое число, и почему это плохо?

    Как отключить уведомления Outlook?

    Как получить информацию об ошибках MySQLi в разных средах

    Ошибка Excel 1004 «Невозможно получить … свойство classа WorksheetFunction», появляющееся непоследовательно

    Что я могу сделать, чтобы разрешить исключение «Row not found or changed» в LINQ to SQL в базе данных SQL Server Compact Edition?

    Отсутствуют ярлыки «Все программы»

    Давайте будем гением компьютера.