Jaka jest różnica między ciągami pojedynczymi i podwójnymi?

18

Jaka jest różnica między ciągami pojedynczymi i podwójnymi?

Czy istnieje sposób na rozwinięcie zmiennej w ciągu lub czy zawsze muszą być połączone w następujący sposób: 'Hello, ' . s:name . '!'

Tom Hale
źródło

Odpowiedzi:

23

Jedyna różnica między łańcuchem pojedynczym i podwójnym jest związana z odwrotnym ukośnikiem. Aby wyświetlić znaki specjalne, takie jak znak nowej linii, dzwonki, tabulatory itp., Musisz użyć cudzysłowów -> "\n".

W ciągu pojedynczego cudzysłowu, '\'sama = = '\n'jest ciągiem dwóch znaków (ukośnik odwrotny + n). W ramach podwójnych cudzysłowów musisz je podwoić -> "\\", co sprawia, że ​​definiowanie wyrażeń regularnych jest niepraktyczne.

Jeśli chodzi o rozwinięcie łańcucha, masz kilka możliwości:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - których nigdy nie używamy
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- z lh-vim-lib, gdy nie chcemy wiedzieć o typach i kiedy nie musimy formatować pól, ale kiedy chcemy użyć formatów takich jak: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
źródło
Czy można zawrzeć 'w ciągu jednego cudzysłowu?
Tom Hale,
2
@TomHale. Tak to jest. Podwój to. -> 'foo''bar'lub użyj obu rodzajów cytatów:'foo'."'".'bar'
Luc Hermitte