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




string.split c# (6)

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

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

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

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


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


Да, чтобы вывести { в 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.Format. В настоящее время существует лучший способ форматирования строки, которая более понятна.


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

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

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

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

string localVar = "dynamic";
string templateString = [email protected]"<h2>{0}</h2><div>this is my {localVar} template using a {{{{custom tag}}}}</div>";
string result = string.Format(templateString, "String Interpolation");

// OUTPUT: <h2>String Interpolation</h2><div>this is my dynamic template using a {custom tag}</div>

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

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




formatting