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.