Często zadawane pytania dotyczące formatowania ciągów MSDN msdn.microsoft.com/en-us/netframework/aa569608 : Jak napisać nawias klamrowy w formatach ciągów? Czy nawiasy klamrowe, które uciekły, mają jakieś dziwne zachowania, o których muszę wiedzieć? Jak mogę użyć formatowania ciągów, aby napisać coś takiego jak „{42.00}”?
gerryLowry
1
Niestety powyższe łącze MSDN jest zepsute. Obecnie poprawnym linkiem wydaje się być msdn.microsoft.com/en-us/library/… (otwórz sekcję QA na dole lub wyszukaj „escape” na stronie).
Palo Mraz
Odpowiedzi:
1283
Aby uzyskać dane wyjściowe foo {1, 2, 3}, musisz zrobić coś takiego:
string t ="1, 2, 3";string v =String.Format(" foo {{{0}}}", t);
Aby wyprowadzić {używany {{i wyprowadzić }używany }}.
lub Teraz możesz także użyć interpolacji ciągów c # w ten sposób (funkcja dostępna w C # 6.0)
Escaping Brackets: String Interpolation $ („”) . jest to nowa funkcja w C # 6.0
var inVal ="1, 2, 3";var outVal = $" foo {{{inVal}}}";//Output will be: foo {1, 2, 3}
Działa również w nowej interpolacji ciągów C # 6 ( $"a = {{ {a} }}")
Mahmoodvcs,
Bardziej szczegółowo na drodze interpolacji ciągów C # 6, podwajanie kręconych działa w ten sposób string v = $" foo {{{t}}}";. Jeśli masz inne postacie do ucieczki, które nie są kręcone, możesz użyć kombinacji $ @string v2 = $@"\foo {{{t}}}\";
Nhan
209
Tak na wyjście {w string.Formattrzeba uciec to tak{{
Więc to
String val ="1,2,3";String.Format(" foo {{{0}}}", val);
wyjdzie "foo {1,2,3}".
ALE musisz wiedzieć o błędzie projektowym w języku C #, który polega na tym, że postępując zgodnie z powyższą logiką, zakładasz, że poniższy kod zostanie wydrukowany {24.00}
int i =24;string str =String.Format("{{{0:N}}}", i);//gives '{N}' instead of {24.00}
Ale to drukuje {N}. Jest tak, ponieważ sposób, w jaki C # analizuje sekwencje specjalne i formatuje znaki. Aby uzyskać żądaną wartość w powyższym przypadku, musisz jej użyć.
String.Format("{0}{1:N}{2}","{", i,"}")//evaluates to {24.00}
Ucieczka nawiasów klamrowych ORAZ zastosowanie interpolacji łańcuchów stanowi ciekawe wyzwanie. Trzeba użyć nawiasów czteroosobowe uciec z interpolacji ciąg analizowania i string.formatanalizowania.
Escaping Brackets: String Interpolation $ ("") and String.Format
string localVar ="dynamic";string templateString = $@"<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>
Przybyłem tutaj, szukając sposobu budowania ciągów json ad-hoc (bez serializacji klasy / obiektu) w języku C #. Innymi słowy, jak uciec nawiasy klamrowe i cudzysłowy podczas korzystania z interpolowanych ciągów znaków w języku C # i „ dosłownych ciągów literałów ” (ciągi cudzysłowione z przedrostkiem „@”), jak ...
[TestMethod]publicvoidBraceEscapingTest(){var result =String.Format("Foo {{0}}","1,2,3");//"1,2,3" is not parsedAssert.AreEqual("Foo {0}", result);
result =String.Format("Foo {{{0}}}","1,2,3");Assert.AreEqual("Foo {1,2,3}", result);
result =String.Format("Foo {0} {{bar}}","1,2,3");Assert.AreEqual("Foo 1,2,3 {bar}", result);
result =String.Format("{{{0:N}}}",24);//24 is not parsed, see @Guru Kara answerAssert.AreEqual("{N}", result);
result =String.Format("{0}{1:N}{2}","{",24,"}");Assert.AreEqual("{24.00}", result);
result =String.Format("{{{0}}}",24.ToString("N"));Assert.AreEqual("{24.00}", result);}
Musiałem przypisać wartość "{CR}{LF}"do stringzmiennej delimiter.
Kod c #:
string delimiter="{{CR}}{{LF}}";
Uwaga: Aby normalnie uciec od znaków specjalnych, musisz użyć. Aby otworzyć nawias klamrowy {, użyj jednego dodatkowego, takiego jak {{. Aby zamknąć nawias klamrowy}, użyj jednego dodatkowego}}.
Odpowiedzi:
Aby uzyskać dane wyjściowe
foo {1, 2, 3}
, musisz zrobić coś takiego:Aby wyprowadzić
{
używany{{
i wyprowadzić}
używany}}
.lub Teraz możesz także użyć interpolacji ciągów c # w ten sposób (funkcja dostępna w C # 6.0)
Escaping Brackets: String Interpolation $ („”) . jest to nowa funkcja w C # 6.0
źródło
$"a = {{ {a} }}"
)string v = $" foo {{{t}}}";
. Jeśli masz inne postacie do ucieczki, które nie są kręcone, możesz użyć kombinacji $ @string v2 = $@"\foo {{{t}}}\";
Tak na wyjście
{
wstring.Format
trzeba uciec to tak{{
Więc to
wyjdzie
"foo {1,2,3}"
.ALE musisz wiedzieć o błędzie projektowym w języku C #, który polega na tym, że postępując zgodnie z powyższą logiką, zakładasz, że poniższy kod zostanie wydrukowany {24.00}
Ale to drukuje {N}. Jest tak, ponieważ sposób, w jaki C # analizuje sekwencje specjalne i formatuje znaki. Aby uzyskać żądaną wartość w powyższym przypadku, musisz jej użyć.
Odnośne artykuły String.Format gottach i FAQ Formatowanie ciągu
źródło
string.Format( "{{{0}}}", i.ToString("N") );
co dla niektórych może być bardziej czytelne.Prawie na miejscu! Sekwencja ucieczki dla klamra jest
{{
albo}}
tak dla przykładu użyłbyś:źródło
Możesz użyć podwójnie otwartych nawiasów i podwójnych nawiasów zamykających, które pokażą tylko jeden nawias na twojej stronie.
źródło
Ucieczka nawiasów klamrowych ORAZ zastosowanie interpolacji łańcuchów stanowi ciekawe wyzwanie. Trzeba użyć nawiasów czteroosobowe uciec z interpolacji ciąg analizowania i
string.format
analizowania.Escaping Brackets: String Interpolation $ ("") and String.Format
źródło
Przybyłem tutaj, szukając sposobu budowania ciągów json ad-hoc (bez serializacji klasy / obiektu) w języku C #. Innymi słowy, jak uciec nawiasy klamrowe i cudzysłowy podczas korzystania z interpolowanych ciągów znaków w języku C # i „ dosłownych ciągów literałów ” (ciągi cudzysłowione z przedrostkiem „@”), jak ...
źródło
źródło
lub możesz użyć interpolacji ciągów c # w ten sposób (funkcja dostępna w C # 6.0)
źródło
Escaping Brackets: String Interpolation $ (""):
Teraz możesz także użyć interpolacji ciągów c # w ten sposób (funkcja dostępna w C # 6.0)
źródło
Mój cel:
Musiałem przypisać wartość
"{CR}{LF}"
dostring
zmiennejdelimiter
.Kod c #:
Uwaga: Aby normalnie uciec od znaków specjalnych, musisz użyć. Aby otworzyć nawias klamrowy {, użyj jednego dodatkowego, takiego jak {{. Aby zamknąć nawias klamrowy}, użyj jednego dodatkowego}}.
źródło