Bisakah saya menghindari kutip ganda dalam string literal kata demi kata?

534

Dalam string literal kata demi kata (@ "foo") dalam C #, garis miring terbalik tidak diperlakukan sebagai pelolosan, sehingga melakukan \ "untuk mendapatkan penawaran ganda tidak bekerja. Apakah ada cara untuk mendapatkan penawaran ganda dalam string literal kata demi kata ?

Ini dimengerti tidak bekerja:

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

Jawaban:

870

Gunakan penawaran ganda duplikat.

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

output:

this "word" is escaped
Myles
sumber
Saya mencoba menggunakan @ Html.Raw () dan kutipan quadruple merusak string saya
JoshYates1980
1
Bisakah Anda menggunakannya tanpa string literal? Sepertinya Html.Raw () akan memastikan bahwa ini adalah string untuk Anda ...
Myles
2
Ini juga mungkin untuk menggunakannya dalam kombinasi dengan tali interpolasi: $@"this ""{wordVar}"" is escaped";.
fdelia
113

Gunakan tanda kutip ganda.

string foo = @"this ""word"" is escaped";
Brandon
sumber
95

Untuk menambahkan beberapa informasi lebih lanjut, contoh Anda akan bekerja tanpa @simbol (ini mencegah melarikan diri dengan \), dengan cara ini:

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

Ini akan bekerja dua arah, tetapi saya lebih suka gaya kutipan ganda agar lebih mudah digunakan, misalnya, dengan nama file (dengan banyak \ dalam string).

Jaestevan
sumber
81

Ini akan membantu menjernihkan semua pertanyaan yang Anda miliki: c # literals

Ini adalah tabel dari konten yang ditautkan:

masukkan deskripsi gambar di sini

rfonn
sumber