ฉันสามารถใช้เครื่องหมายคำพูดคู่ในสตริงตัวอักษรต่อคำได้หรือไม่?


534

ในสตริงตัวอักษรคำต่อคำ (@ "foo") ใน C # เครื่องหมายแบ็กสแลชจะไม่ถือว่าเป็น escapes ดังนั้นการทำ \ "เพื่อให้ได้อัญประกาศคู่ไม่ทำงานมีวิธีใดที่จะได้รับการเสนอราคาซ้ำในสตริงตัวอักษรคำต่อคำ ?

สิ่งนี้เข้าใจไม่ได้:

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

คำตอบ:


870

ใช้เครื่องหมายคำพูดคู่ซ้ำ

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

เอาท์พุท:

this "word" is escaped

ฉันพยายามที่จะใช้ @ Html.Raw () และคำพูดสี่เท่าแบ่งสตริงของฉัน
JoshYates1980

1
คุณสามารถใช้มันโดยไม่ใช้ตัวอักษรสตริง? ดูเหมือนว่า Html.Raw () จะดูแลเพื่อให้มั่นใจว่ามันเป็นสตริงสำหรับคุณ ...
ไมลส์

2
$@"this ""{wordVar}"" is escaped";นอกจากนี้ยังเป็นไปได้ที่จะใช้มันในการรวมกันกับสตริงการแก้ไข:
fdelia


95

สำหรับการเพิ่มข้อมูลเพิ่มเติมตัวอย่างของคุณจะทำงานโดยไม่มี@สัญลักษณ์ (มันป้องกันการหลบหนีด้วย \) ด้วยวิธีนี้:

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

มันจะทำงานได้ทั้งสองวิธี แต่ฉันชอบสไตล์การอ้างสองครั้งเพื่อให้ทำงานได้ง่ายขึ้นตัวอย่างเช่นกับชื่อไฟล์ (ที่มีจำนวนมาก \ ในสตริง)


81

สิ่งนี้จะช่วยล้างคำถามที่คุณอาจมี: c # literals

นี่คือตารางจากเนื้อหาที่เชื่อมโยง:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.