2011-08-18 3 views
22

Powiel możliwe:
Escape curly brace '{' in String.FormatC# String.Format z nawias klamrowy w ciąg

C# ma metodę string.Format który pozwala formatować ciąg lecz dodatkowo params z żetonami {0}{1}

Próbuję utworzyć prosty ciąg json, który wymaga, aby w nawiasie były nawiasy klamrowe, a więc jest to łamanie formatowania

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

Dodawanie ucieczkę przed szelki nie pomoże

Zgłasza wyjątek mówiąc mój ciąg jest nieprawidłowo sformatowana, ktoś wie jak to obejść?

+0

W Framework 4.6 lub wyższy, można to zrobić ... \t ciąg Moe = "Moe"; \t string larry = "Larry"; \t string curly = "{Curly}"; \t wyniki string = $ "1: {moe} 2: {larry} 3: {curly}"; – rwg

Odpowiedz

44

można uciec od szelek przez podwojenie je w swoich strun format:

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

można po prostu użyć {{ lub }} uciec nawias klamrowy.

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

produkuje:

Moe, Larry, Curly} {

+5

Musisz zachować ostrożność, jeśli chodzi o potrojenie w nawiasach klamrowych ... w tym przypadku działa, ale ogólnie rzecz biorąc, analizator składni wyświetla to jako "{{{" lub "}}}". Lepszym rozwiązaniem może być utworzenie {3}, który jest samym nawiasem –