How to escape braces (curly brackets) in a format string in .NET

Viewed 340599

How can brackets be escaped in using string.Format?

For example:

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

This example doesn't throw an exception, but it outputs the string foo {0}.

Is there a way to escape the brackets?

11 Answers

For you to output foo {1, 2, 3} you have to do something like:

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

To output a { you use {{ and to output a } you use }}.

Or now, you can also use C# string interpolation like this (a feature available in C# 6.0)

Escaping brackets: String interpolation $(""). It is new feature in C# 6.0.

var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
// The output will be:  foo {1, 2, 3}

Almost there! The escape sequence for a brace is {{ or }} so for your example you would use:

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

You can use double open brackets and double closing brackets which will only show one bracket on your page.

My objective:

I needed to assign the value "{CR}{LF}" to a string variable delimiter.

C# code:

string delimiter= "{{CR}}{{LF}}";

Note: To escape special characters normally you have to use \. For opening curly bracket {, use one extra, like {{. For closing curly bracket }, use one extra, }}.

You can also use like this. var outVal = $" foo {"{"}{inVal}{"}"} --- {"{"}Also Like This{"}"}"

Escaping Brackets: String Interpolation $(""):

Now, you can also use C# string interpolation like this (feature available in C# 6.0):

var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
// The output will be:  foo {1, 2, 3}
Related