Was ist der Unterschied zwischen Strings in einfachen und doppelten Anführungszeichen?

18

Was ist der Unterschied zwischen Strings in einfachen und doppelten Anführungszeichen?

Gibt es eine Möglichkeit, eine Variable innerhalb eines Strings zu erweitern, oder müssen sie immer wie folgt verbunden werden: 'Hello, ' . s:name . '!'

Tom Hale
quelle

Antworten:

23

Der einzige Unterschied zwischen Zeichenfolgen in einfachen und doppelten Anführungszeichen besteht im Zusammenhang mit Backslash. Um anzuzeigen Sonderzeichen wie Newline, Glocken, Tabulatoren, etc, müssen Sie doppelte Anführungszeichen verwenden -> "\n".

In einer Zeichenfolge in Anführungszeichen '\'ist selbst => '\n'eine Zeichenfolge mit zwei Zeichen (ein Backslash + n). Innerhalb von doppelten Anführungszeichen müssen Sie es verdoppeln -> "\\", was es unpraktisch macht, reguläre Ausdrücke zu definieren.

In Bezug auf die String-Erweiterung haben Sie einige Möglichkeiten:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - was wir nie benutzen
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- von lh-vim-lib, wenn wir nichts über Typen wissen wollen und wenn wir keine Felder formatieren müssen, aber wenn wir Formate verwenden wollen wie: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
quelle
Ist es möglich, 'einen String in Anführungszeichen zu setzen?
Tom Hale
2
@TomHale. Ja ist es. Verdopple es. -> 'foo''bar'oder verwenden Sie beide Arten von Anführungszeichen:'foo'."'".'bar'
Luc Hermitte