Urutan pelolosan tak dikenal untuk string jalur yang mengandung garis miring terbalik


90

Kode berikut menghasilkan kesalahan kompilator tentang "urutan pelolosan yang tidak dikenal" untuk setiap garis miring terbalik:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Saya kira saya harus melarikan diri dari garis miring terbalik? Bagaimana aku melakukan itu?

Jawaban:


224

Anda dapat menggunakan garis miring terbalik ganda setiap kali

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

atau gunakan simbol @

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Ini juga membantu menyelesaikan masalah Html.TextBoxFor yang saya alami. Menggunakan @ sebelum ekspresi reguler menyelesaikan urutan escape yang tidak dikenali, di mana garis miring terbalik ganda gagal.
— Joshua

27

Coba ini:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Masalahnya adalah bahwa dalam string, a \adalah karakter pelarian. Dengan menggunakan @tanda Anda memberi tahu kompiler untuk mengabaikan karakter escape.

Anda juga bisa bertahan dengan keluar dari \:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

4
FWIW dan untuk membantu Googlebot, istilah untuk @ "" adalah "literal string verbatim". Meskipun saya juga pernah mendengarnya disebut sebagai "string literal", yang secara teknis menyertakan "literal string biasa" dari hanya "". msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
— Mark Brackett

13
var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

Pada catatan kecil, "kemudian lolos seperti" "
— flq

9

Jika string Anda adalah jalur file, seperti dalam contoh Anda, Anda juga dapat menggunakan jalur file gaya Unix:

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";

Tetapi jawaban lain memiliki solusi yang lebih umum untuk string escaping di C #.


5
string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

Ini akan berhasil, atau contoh sebelumnya juga akan berhasil. @ "..." berarti perlakukan semua yang ada di antara tanda kutip secara harfiah, sehingga Anda bisa melakukannya

@"Hello
world"

Untuk memasukkan baris baru literal. Saya lebih tua dan lebih memilih untuk melarikan diri "\" dengan "\\"


Tapi ganda "tidak diperlakukan secara harfiah.
— Pemain sayap Sendon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.