Meloloskan tanda kutip ganda dalam sebuah string

173

Kutipan ganda dapat lolos seperti ini:

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

Tapi ini melibatkan penambahan karakter "ke string. Apakah ada fungsi C # atau metode lain untuk menghindari tanda kutip ganda sehingga tidak perlu mengubah string?

Mudassir Hasan
sumber
5
Anda dapat menggunakan \ "Hello World \" seperti ini
Pandian
1
Apa yang sebenarnya Anda inginkan? "" menjadi "dalam string literal.
Roel
Pertanyaan serupa untuk C / C ++ (karena ini mungkin menjadi hit mesin pencari teratas): Bagaimana saya bisa mendapatkan tanda kutip ganda menjadi string literal?
Peter Mortensen

Jawaban:

226

Tidak.

Baik menggunakan string literal kata demi kata seperti yang Anda miliki, atau lepas "menggunakan backslash.

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

String tidak berubah dalam kedua kasus - ada satu yang lolos " di dalamnya. Ini hanya cara untuk memberitahu C # bahwa karakter adalah bagian dari string dan bukan terminator string.

Oded
sumber
81

Anda dapat menggunakan backslash dengan cara apa pun;

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

Mencetak;

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

yang sama persis dengan cetakan;

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

Ini dia DEMO.

" masih menjadi bagian dari string Anda.

Lihat Escape Sequencesdan String literalsdari MSDN.

Soner Gönül
sumber
18

Di C # Anda dapat menggunakan garis miring terbalik untuk meletakkan karakter khusus ke string Anda. Misalnya, untuk menempatkan ", Anda harus menulis \". Ada banyak karakter yang Anda tulis menggunakan backslash: Backslash dengan nomor:

  • \ 000 nol
  • \ 010 ruang mundur
  • \ 011 tab horizontal
  • \ 012 baris baru
  • \ 015 carriage return
  • \ 032 pengganti
  • \ 042 penawaran ganda
  • \ 047 kutipan tunggal
  • \ 134 backslash
  • \ 140 aksen serius

Garis miring terbalik dengan karakter lain

  • \ a Bell (lansiran)
  • \ b Backspace
  • \ f Formfeed
  • \ n Baris baru
  • Pengembalian kereta
  • \ t tab Horizontal
  • \ v Tab vertikal
  • \ 'Tanda kutip tunggal
  • \ "Tanda kutip ganda
  • \ Backslash
  • \ Tanda tanya literal
  • \ ooo karakter ASCII dalam notasi oktal
  • \ x hh karakter ASCII dalam notasi heksadesimal
  • \ x hhhh Karakter Unicode dalam notasi heksadesimal jika urutan escape ini digunakan dalam konstanta karakter lebar atau literal string Unicode. Misalnya, WCHAR f = L '\ x4e00' atau WCHAR b [] = L "Karakter bahasa Mandarin untuk satu adalah \ x4e00".
Daniel Antokoletz
sumber
6

Anda salah paham melarikan diri.

"Karakter tambahan adalah bagian dari string literal; mereka ditafsirkan oleh kompiler sebagai tunggal " .

Nilai sebenarnya dari string Anda masih He said to me , "Hello World".How are you ?, karena Anda akan melihat apakah Anda mencetaknya saat runtime.

Slaks
sumber
4

Tolong jelaskan masalah Anda. Kamu bilang:

Tetapi ini melibatkan penambahan karakter "ke string.

Masalah apa itu? Anda tidak dapat mengetik string foo = "Foo"bar"";, karena itu akan memunculkan kesalahan kompilasi. Adapun bagian menambahkan , dalam hal ukuran string yang tidak benar:

@"""".Length == "\"".Length == 1
CodeCaster
sumber