ความแตกต่างระหว่างสตริงที่ยกมาเดี่ยวและสองครั้งคืออะไร?


18

ความแตกต่างระหว่างสตริงที่ยกมาเดี่ยวและสองครั้งคืออะไร?

มีวิธีการรับตัวแปรขยายภายในสตริงหรือไม่พวกเขาจำเป็นต้องเข้าร่วมเช่น: 'Hello, ' . s:name . '!'

คำตอบ:


23

ความแตกต่างเพียงอย่างเดียวระหว่างสตริงที่ยกมาเดี่ยวและสองที่เกี่ยวข้องกับเครื่องหมายทับขวา การแสดงตัวอักษรพิเศษเช่นการขึ้นบรรทัดใหม่, ระฆัง, แท็บ ฯลฯ คุณจะต้องใช้ราคาสองครั้ง "\n"->

ภายในสตริงที่มีเครื่องหมายคำพูดเดี่ยว'\'คือตัวเอง => '\n'เป็นสตริงสองอักขระ (เครื่องหมายแบ็กสแลช + n) ภายในเครื่องหมายคำพูดคู่คุณต้องเพิ่มเป็นสองเท่า -> "\\"ซึ่งทำให้ไม่สามารถกำหนด regexes ได้

เกี่ยวกับการขยายสตริงคุณมีตัวเลือกน้อย:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - ซึ่งเราไม่เคยใช้
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- จาก lh-vim-lib เมื่อเราไม่ต้องการทราบเกี่ยวกับประเภทและเมื่อเราไม่ต้องการจัดรูปแบบฟิลด์ แต่เมื่อเราต้องการใช้รูปแบบเช่น: 'Hello %1. How are you doing %1 this %2'

เป็นไปได้หรือไม่ที่จะรวม'ไว้ในสตริงที่มีเครื่องหมายคำพูดเดี่ยว?
Tom Hale

2
@TomHale ใช่แล้ว. เพิ่มเป็นสองเท่า -> 'foo''bar'หรือใช้ทั้งสองชนิดของคำพูด:'foo'."'".'bar'
Luc Hermitte
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.