Thoát dấu ngoặc kép trong một chuỗi


173

Dấu ngoặc kép có thể được thoát như thế này:

string test = @"He said to me, ""Hello World"". How are you?";

Nhưng điều này liên quan đến việc thêm ký tự "vào chuỗi. Có chức năng C # hoặc phương pháp khác để thoát dấu ngoặc kép để không cần thay đổi chuỗi không?


5
bạn có thể sử dụng \ "Hello World \" như thế này
— Pandian

1
Kết quả bạn muốn là gì? "" trở thành "trong một chuỗi nghĩa đen.
— Roel

Một câu hỏi tương tự cho C / C ++ (vì đây có thể là công cụ tìm kiếm hàng đầu): Làm thế nào tôi có thể nhận được hai dấu ngoặc kép thành một chuỗi ký tự?
— Peter Mortensen

Câu trả lời:


225

Không.

Sử dụng chuỗi ký tự nguyên văn như bạn có hoặc thoát khỏi "dấu gạch chéo ngược.

string test = "He said to me, \"Hello World\" . How are you?";

Chuỗi không thay đổi trong cả hai trường hợp - có một chuỗi thoát " trong đó. Đây chỉ là một cách để nói với C # rằng ký tự là một phần của chuỗi chứ không phải là dấu kết thúc chuỗi.


81

Bạn có thể sử dụng dấu gạch chéo ngược;

string str = "He said to me, \"Hello World\". How are you?";

Nó in;

He said to me, "Hello World". How are you?

đó là chính xác cùng một bản in với;

string str = @"He said to me, ""Hello World"". How are you?";

Đây là DEMO .

" vẫn là một phần của chuỗi của bạn.

Kiểm tra Escape Sequencesvà String literalstừ MSDN.


18

Trong C #, bạn có thể sử dụng dấu gạch chéo ngược để đặt các ký tự đặc biệt vào chuỗi của mình. Ví dụ: để đặt ", bạn cần viết \". Có rất nhiều ký tự mà bạn viết bằng dấu gạch chéo ngược: Dấu gạch chéo ngược có số:

  • \ 000 null
  • \ 010 backspace
  • \ 011 tab ngang
  • \ 012 dòng mới
  • \ 015 xe trở về
  • \ 032 thay thế
  • \ 042 báo giá kép
  • \ 047 trích dẫn đơn
  • \ Dấu gạch chéo ngược 134
  • 140 giọng trầm

Dấu gạch chéo ngược với ký tự othe

  • \ một tiếng chuông (cảnh báo)
  • \ b Backspace
  • \ f Formfeed
  • \ n Dòng mới
  • \ r Vận chuyển trở lại
  • \ T tab ngang
  • \ v Tab dọc
  • \ 'Dấu ngoặc đơn
  • \ "Dấu ngoặc kép
  • \ Dấu gạch chéo ngược
  • \? Dấu hỏi
  • \ ooo ký tự ASCII trong ký hiệu bát phân
  • \ x hh ký tự ASCII theo ký hiệu thập lục phân
  • \ x hhhh Ký tự Unicode theo ký hiệu thập lục phân nếu chuỗi thoát này được sử dụng trong hằng số ký tự rộng hoặc chuỗi ký tự Unicode. Ví dụ: WCHAR f = L '\ x4e00' hoặc WCHAR b [] = L "Ký tự tiếng Trung cho một là \ x4e00".

6

Bạn đang hiểu lầm trốn thoát.

Các "ký tự phụ là một phần của chuỗi ký tự; họ được giải thích bởi trình biên dịch như một single " .

Giá trị thực của chuỗi của bạn vẫn còn He said to me , "Hello World".How are you ?, như bạn sẽ thấy nếu bạn in nó trong thời gian chạy.


4

Hãy giải thích vấn đề của bạn. Bạn nói:

Nhưng điều này liên quan đến việc thêm ký tự "vào chuỗi.

Vấn đề là gì? Bạn không thể gõ string foo = "Foo"bar"";, vì điều đó sẽ gây ra lỗi biên dịch. Đối với phần thêm vào , trong điều khoản kích thước chuỗi không đúng:

@"""".Length == "\"".Length == 1
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.