2

I have already seen from other answers that to escape the { or } char in C# string.Format() you use {{ or }}.

But what I need to do is format a string that looks like this:

{{tag}}

However, when I try to escape the double curly braces like this:

string.Format("{{{0}}}", "tag");

or this:

string.Format("{{{{{0}}}}}", "tag");

The output is always this:

{tag}

A different way I have found that works is:

StringBuilder output = new StringBuilder();

output.Append("{{");
output.Append("tag");
output.Append("}}");

But it seems silly to have to have all that just to format a string.

Am I missing something obvious?

Community
  • 1
  • 1
Charles Wesley
  • 828
  • 12
  • 27

2 Answers2

5

In order to do this you need 5 braces on either side of the expression

Console.WriteLine("{{{{{0}}}}}", "tag");

The break down is

  • 2 for the first {
  • 2 for the second {
  • 1 for the first { in {0}
JaredPar
  • 733,204
  • 149
  • 1,241
  • 1,454
  • Seems I had it correct the first time, I'm not clear what my issue was. A rebuild of the solution seemed to help. Thanks everyone – Charles Wesley Mar 20 '14 at 23:16
2

You can use code this way.

string.Format("{0}{1}{2}", "{{","tag","}}");
Kalu Singh Rao
  • 1,671
  • 1
  • 16
  • 21
Chalumeau
  • 101
  • 10