32

Possible Duplicate:
Escape curly brace '{' in String.Format

c# has a String.Format method that allows you to format a string but inserting params with the tokens {0} {1}

I am trying to create a simple json string which requires curly brackets to be in the string, and so it is breaking the formatter

String.Format("{ foo:'{0}', bar:'{1}' }", foo, bar);

Adding an escape before the braces did not help

Throws a exception saying my string is incorrectly formatted, anyone know how to get around this?

Community
  • 1
  • 1
MattoTodd
  • 14,467
  • 16
  • 59
  • 76
  • In Framework 4.6 or higher, you can do this ... string moe = "Moe"; string larry = "Larry"; string curly = "{Curly}"; string results = $"1:{moe} 2:{larry} 3:{curly}"; – rwg Dec 22 '17 at 20:31

2 Answers2

65

You can escape the braces by doubling them up in your format strings:

string.Format("{{ foo: '{0}', bar: '{1}' }}", foo, bar);
Matthew Abbott
  • 60,571
  • 9
  • 104
  • 129
14

You can simply use {{ or }} to escape a curly brace.

Console.WriteLine(String.Format("{0}, {1}, {{{2}}}", "Moe", "Larry", "Curly"));

produces:

Moe, Larry, {Curly}

Bryan Crosby
  • 6,486
  • 3
  • 36
  • 55
  • 8
    You need to be careful about tripling-up on braces... in this case it works, but in general, does the parser view that as '{ {{' or '}} }'. It can be better to create a {3} that is the brace itself – Kyle W Aug 18 '11 at 23:20