2009-12-18 14 views
462

C# içinde bir yazım dizgisi literal (@ "foo"), ters eğik çizgi kaçış olarak ele alınmaz, bu yüzden çift tırnak işareti almak için \ "iş yapmaz. Bir sözdiziminde çift tırnak almanın herhangi bir yolu var mı ? dizeBir verbatim dizesinde bir çift alıntıdan çıkabilir miyim?

Bu anlaşılır çalışmaz:

string foo = @"this \"word\" is escaped"; 

cevap

752

kullan yinelenen çift tırnak

@"this ""word"" is escaped"; 

çıkışları:.

this "word" is escaped 
+0

ben @ Html.Raw (kullanmaya çalışıyorum) ve dörtlü alıntı – JoshYates1980

+1

sen kullanabilir miyim benim dize kırar başvurabilir duyuyorum Dize literal olmadan? Html.Raw() 'ın sizin için bir dize olmasını sağlamaya özen gösterecektir ... – Myles

+0

Aynı zamanda string interpolasyonu ile birlikte kullanmak da mümkündür: $ $ "this" "{wordVar}" "" atıldı "; '. – fdelia

103

Çift tırnak işareti kullanın.

string foo = @"this ""word"" is escaped"; 
59

Bu soru temizlenmesine yardımcı olmalıdır olabilecek: Burada

c# literals bağlantılı içeriğinde yer alan bir tablodur: biraz daha bilgi eklemek için

enter image description here

90

, sizin örnek olacak @ sembolü olmadan çalışma (bu, \ ile kaçmayı önler), şu şekilde:

string foo = "this \"word\" is escaped!"; 

Her iki şekilde de çalışır, ancak çift tırnaklı stili tercih ederim, örneğin dosya isimleriyle (dizede çok sayıda \).

1
string str = @"""Hi, "" I am programmer"; 

ÇIKIŞ - "Merhaba," Ben programcı

Sen '@' prefix before any string in C# .NET

+37

Bu soru oldukça eski ve zaten kabul edilmiş yüksek bir cevabı var: gerçekten bir cevaba ihtiyacı olan soruları yanıtlamaya çalışmalısınız. – kdt

+22

Bunu mu demek istediniz: "Merhaba, ben bir programcı" deyin? – hyde

İlgili konular