Chuỗi thoát không được công nhận cho chuỗi đường dẫn chứa dấu gạch chéo ngược


90

Đoạn mã sau tạo ra lỗi trình biên dịch về "chuỗi thoát không được công nhận" cho mỗi dấu gạch chéo ngược:

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

Tôi đoán tôi cần thoát khỏi gạch chéo ngược? Làm thế nào để làm điều đó?

Câu trả lời:


224

Bạn có thể sử dụng dấu gạch chéo ngược kép mỗi lần

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

hoặc sử dụng ký hiệu @

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

Điều này cũng giúp giải quyết sự cố Html.TextBoxFor mà tôi đang gặp phải. Việc sử dụng @ trước biểu thức chính quy đã giải quyết chuỗi thoát Không được công nhận, trong đó dấu gạch chéo ngược kép không thành công.
Joshua,

27

Thử đi:

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

Vấn đề là trong một chuỗi, a \là một ký tự thoát. Bằng cách sử dụng @dấu hiệu, bạn yêu cầu trình biên dịch bỏ qua các ký tự thoát.

Bạn cũng có thể thoát khỏi \:

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

4
FWIW và để trợ giúp Googlebot, thuật ngữ cho @ "" là một "chuỗi nguyên văn". Mặc dù tôi cũng đã nghe nói nó chỉ được gọi là "chuỗi ký tự", về mặt kỹ thuật nó bao gồm "ký tự chuỗi thông thường" của chỉ "". msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx
Mark Brackett

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

Một lưu ý nhỏ, một "sau đó được thoát ra giống như" "
flq

9

Nếu chuỗi của bạn là đường dẫn tệp, như trong ví dụ của bạn, bạn cũng có thể sử dụng đường dẫn tệp kiểu Unix:

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

Nhưng các câu trả lời khác có các giải pháp chung hơn để thoát chuỗi trong C #.


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

Điều này sẽ hoạt động, hoặc các ví dụ trước cũng vậy. @ "..." có nghĩa là xử lý mọi thứ giữa các dấu ngoặc kép theo nghĩa đen, vì vậy bạn có thể làm

@"Hello
world"

Để bao gồm một dòng mới theo nghĩa đen. Tôi học cũ hơn và muốn thoát khỏi "\" bằng "\\"


Nhưng đôi "không được đối xử theo nghĩa đen.
Winger Sendon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.