2009-12-18 13 views
462

Trong một chuỗi chữ nguyên văn (@ "foo") trong C#, dấu gạch chéo ngược không được coi là thoát, do đó, \ "để có được một dấu ngoặc kép không hoạt động. Có cách nào để có được một dấu ngoặc kép trong một nguyên văn ? chuỗi chữTôi có thể thoát khỏi một dấu ngoặc kép trong một chuỗi chữ nguyên văn không?

này dễ hiểu không hoạt động:

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

Trả lời

752

Sử dụng một dấu nháy kép trùng lặp

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

kết quả đầu ra:.

this "word" is escaped 
+0

Tôi đang cố gắng sử dụng @ Html.Raw() và báo giá tăng gấp bốn lần phá vỡ chuỗi của tôi – JoshYates1980

+1

bạn có thể sử dụng nó không có chuỗi chữ? Nó có vẻ như Html.Raw() sẽ chăm sóc đảm bảo nó là một chuỗi cho bạn ... – Myles

+0

Nó cũng có thể sử dụng nó kết hợp với nội suy chuỗi: '$ @" này "" {wordVar} "" được thoát "; '. – fdelia

103

Sử dụng dấu ngoặc kép.

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

Điều này sẽ giúp làm sáng tỏ bất kỳ câu hỏi mà bạn có thể có: c# literals

Dưới đây là một bảng từ nội dung liên quan:

enter image description here

90

Để thêm một số chi tiết thông tin, ví dụ của bạn sẽ làm việc không có biểu tượng @ (ngăn chặn thoát bằng \), theo cách này:

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

Nó sẽ hoạt động theo cả hai cách nhưng tôi thích kiểu báo giá kép để làm việc dễ dàng hơn, ví dụ, với tên tệp (có nhiều \ trong chuỗi).

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

OUTPUT - "Xin chào," Tôi lập trình viên

Bạn có thể tham khảo '@' prefix before any string in C# .NET

+37

Câu hỏi này khá cũ và đã có câu trả lời được đánh giá cao: bạn nên cố gắng trả lời các câu hỏi thực sự cần câu trả lời. – kdt

+22

Ý của bạn là "Xin chào, tôi là" lập trình viên ""? – hyde