Kaip išvengti garbanotųjų petnešų (garbanotųjų skliaustų) .NET formato eilutėje.

Kaip aš galiu nukopijuoti, kai naudojate string.Format . Pavyzdžiui:

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

Šiame pavyzdyje nėra sukurta jokia išimtis, bet išvesties eilutėje foo {0}

Ar yra būdas išvengti skliaustelių?

874
18 сент. nustatė Pop Catalin 18 sept. 2008-09-18 13:04 '08, 13:04 val. 2008-09-18 13:04
@ 10 atsakymų

Jei norite išvesti foo {1, 2, 3} turite daryti kažką panašaus:

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

Išvesties { jūs naudojate {{ ir išvesties } }} .

1154
18 сент. Jorge Ferreira atsakymas rugsėjo 18 d 2008-09-18 13:07 '08, 13:07 pm 2008-09-18 13:07

Taip, išėjimo { string.Format jums reikia pabėgti nuo jo {{

Taigi tai

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

rodo "foo {1,2,3}" .

BET, turėtumėte žinoti projektavimo klaidą „C #“, ty, atlikdami aukščiau pateiktą logiką, jūs manėte, kad šis kodas bus spausdinamas {24.00} toliau

 int i = 24; string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00} 

Bet jis spausdina {n}. Taip yra dėl to, kad C # metodas analizuoja pabėgimo sekas ir formuoja simbolius. Norint gauti tinkamą vertę pirmiau nurodytu atveju, turėtumėte tai naudoti.

 String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00} 

Pagalbos straipsniai String.Format gottach ir dažniausiai užduodami klausimai apie styginių formatavimą

193
26 февр. atsakymą pateikė Guru Kara , vasario 26 d. 2013-02-26 12:12 '13, 12:12, 2013-02-26 12:12

Beveik ten! Garbanotųjų petnešų valdymo seka yra {{ arba }} , todėl jūsų pavyzdyje naudosite:

 string t = "1, 2, 3"; string v = String.Format(" foo {{{0}}}", t); 
70
18 сент. Atsakymas, kurį pateikė Wolfwyrd Sep 18 2008-09-18 13:08 '08, 13:08 val. 2008-09-18 13:08

Galite naudoti dvigubus atidarytus skliaustelius ir dvigubus uždarymo skliaustus, kuriuose bus rodomas tik vienas laikiklis.

21
22 марта '10 в 13:09 2010-03-22 13:09 atsakymas pateikiamas el. kovo 22 d. 10 val. 13:09 2010-03-22 13:09

Įdomus uždavinys - mažinti garbanotuosius skliaustelius ir naudojant eilutės interpoliaciją . Kad išvengtumėte string.format ir string.format , turite naudoti keturis string.format skliaustelius.

Slankiosios skliausteliai: $ ("") ir String.Format styginių interpoliavimas

8
20 июня '17 в 22:30 2017-06-20 22:30 atsakymas pateikiamas SliverNinja - MSFT birželio 20 d., 17 val. 10:30 pm 2017-06-20 22:30
 [TestMethod] public void BraceEscapingTest() { var result = String.Format("Foo {{0}}", "1,2,3"); //"1,2,3" is not parsed Assert.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 answer Assert.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); } 
4
06 мая '16 в 19:48 2016-05-06 19:48 atsakymas duotas pomberis 06 gegužės 16 d. 19:48 2016-05-06 19:48

Aš atėjau čia ieškodamas, kaip sukurti „Json“ eilutes ad-hoc (be serijos / klasės) C #. Kitaip tariant, kaip išvengti garbanotųjų petnešų ir kabučių, kai naudojate interpoliuojamąsias eilutes C # ir „ stenogramų eilutėse “ (dvigubos kabutės su prefiksu „@“), pavyzdžiui, ...

 var json = $@"{{""name"":""{name}""}}"; 
4
18 апр. atsakymą pateikė Adam Cox 18 balandžio. 2017-04-18 17:24 '17 at 17:24 pm 2017-04-18 17:24

arba galite naudoti tokias C # eilutes kaip interpoliaciją (funkcija pasiekiama C # 6.0)

 var value = "1, 2, 3"; var output = $" foo {{{value}}}"; 
2
03 янв. atsakymas pateikiamas Aarif 03 sausio 2018-01-03 19:49 '18, 19:49 PM 2018-01-03 19:49

Jei norite išvesti foo {1, 2, 3}, turite daryti kažką panašaus:

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

Norėdami išvesties {{jūs naudojate {{ir išvesties a}, naudojate}}.

0
12 июня '18 в 6:28 2018-06-12 06:28 Atsakymą davė Jatinder Singh birželio 12 d. 18, 6:28 2018-06-12 06:28

Nenaudokite eilutės. Šiuo metu yra geresnis būdas suprasti suprantamesnę eilutę.

-2
15 июня '18 в 10:39 2018-06-15 10:39 atsakymas į TemaTre birželio 18 d. 18 val. 10:39 2018-06-15 10:39

Kiti klausimai apie žymių Arba Užduoti klausimą