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 SequencesString 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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.