Mehrzeilige Strings in JavaScript

Bei der Programmierung mit JavaScript stolpert man oft über die fehlende Möglichkeit, mehrzeilige Strings dadurch zu realisieren, dass sie auch mehrzeilig im Code eingegeben werden. Während die Aufgabe in anderen Sprachen wie PHP oder Ruby kein Problem darstellt, kann man sich bei JavaScript zunächst nur mit Workarounds behelfen, über deren Einsatz der persönliche Geschmack bzw. die Browserunterstützung entscheidet.


Der naheliegende Versuch

var str = "Dies ist eine
mehrzeilige
Zeichenkette.";

schlägt fehl und der Parser sich dann gleich über mehrere Dinge (in Form von Unexpected token ILLEGAL) beschwert, da JavaScript (im Gegensatz zu anderen Programmiersprachen wie PHP) nach jedem Zeilenende automatisch ein Semikolon einfügt:

var str = "Dies ist eine;
mehrzeilige;
Zeichenkette.";

Eine erste Lösung des Problems besteht aus der einfachen String-Konkatenation durch den \n- und +-Operator:

var str = "Dies ist eine\n" +
"mehrzeilige\n" +
"Zeichenkette.";

Wer eine weniger langsame und etwas schönere Variante bevorzugt, fügt an das Ende jeder Zeile einen Backslash:

var str = "Dies ist eine\n\
mehrzeilige\n\
Zeichenkette";

Alternativ kann man auch die Join-Methode nutzen und erhält:

var str = ["Dies ist eine",
"mehrzeilige",
"Zeichenkette"].join("\n");

Wer hingegen bei regulären Ausdrücken leuchtende Augen bekommt, nutzt folgende Syntax (match() filtert die Werte zwischen den Kommentaren):

var str = (function () {/*Dies ist eine
mehrzeilige
Zeichenkette*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];

Wichtig: Wird der Code minified, kann man diese Lösung vergessen (da die Kommentare ebenfalls mit entfernt werden).

Die schönste Variante gelingt mit ECMA6 und der Hilfe von Template Strings:

var str = `Dies ist eine
mehrzeilige
Zeichenkette`;
Zurück