Apa perbedaan antara string kutipan tunggal dan ganda?

18

Apa perbedaan antara string kutipan tunggal dan ganda?

Apakah ada cara untuk membuat variabel diperluas di dalam string, atau apakah mereka selalu perlu digabungkan seperti: 'Hello, ' . s:name . '!'

Tom Hale
sumber

Jawaban:

23

Satu-satunya perbedaan antara string yang dikutip tunggal dan ganda terkait dengan backslash. Untuk menampilkan karakter khusus seperti baris baru, bel, tab, dll, Anda perlu menggunakan tanda kutip ganda -> "\n".

Dalam string yang dikutip tunggal, '\'itu sendiri => '\n'adalah string dua karakter (a backslash + n). Di dalam tanda kutip ganda, Anda harus menggandakannya -> "\\", yang membuatnya tidak praktis untuk mendefinisikan regex.

Mengenai ekspansi string, Anda memiliki beberapa pilihan:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - yang tidak pernah kita gunakan
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- dari lh-vim-lib, ketika kita tidak ingin tahu tentang jenis, dan kapan kita tidak perlu memformat bidang, tetapi ketika kita ingin menggunakan format seperti: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
sumber
Apakah mungkin untuk memasukkan ke 'dalam string yang dikutip tunggal?
Tom Hale
2
@ TomHale. Ya itu. Gandakan itu. -> 'foo''bar', atau gunakan kedua jenis kutipan:'foo'."'".'bar'
Luc Hermitte