Quelle est la différence entre des chaînes entre guillemets simples et doubles?

18

Quelle est la différence entre des chaînes entre guillemets simples et doubles?

Existe-t-il un moyen d'obtenir une variable développée à l'intérieur d'une chaîne, ou faut-il toujours les joindre comme: 'Hello, ' . s:name . '!'

Tom Hale
la source

Réponses:

23

La seule différence entre une chaîne entre guillemets simples et doubles est liée à la barre oblique inverse. Pour afficher des caractères spéciaux comme la nouvelle ligne, les cloches, les tabulations, etc., vous devez utiliser des guillemets doubles -> "\n".

Dans une chaîne entre guillemets simples, '\'est lui-même => '\n'est une chaîne de deux caractères (une barre oblique inverse + n). Dans les guillemets doubles, vous devez le doubler -> "\\", ce qui les rend peu pratiques pour définir les expressions rationnelles.

En ce qui concerne l'expansion des chaînes, vous avez plusieurs choix:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - que nous n'utilisons jamais
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- depuis lh-vim-lib, quand nous ne voulons pas connaître les types, et quand nous n'avons pas besoin de formater les champs, mais quand nous voulons utiliser des formats comme: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
la source
Est-il possible d'inclure à l' 'intérieur d'une chaîne entre guillemets simples?
Tom Hale
2
@TomHale. Oui, ça l'est. Doublez-le. -> 'foo''bar', ou utilisez les deux types de citations:'foo'."'".'bar'
Luc Hermitte