Stringhe multilinea in JavaScript

Quando si programma con JavaScript, spesso ci si imbatte nell'incapacità di implementare stringhe multilinea inserendole in più righe nel codice. Sebbene l'attività in altri linguaggi come PHP o Ruby non sia un problema, con JavaScript puoi inizialmente aggirare solo soluzioni alternative, il cui utilizzo è deciso dal gusto personale o dal supporto del browser.


L'ovvio tentativo

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

fallisce e il parser si lamenta di diverse cose (sotto forma di token imprevisto ILLEGALE) perché JavaScript (a differenza di altri linguaggi di programmazione come PHP) inserisce automaticamente un punto e virgola dopo la fine di ogni riga:

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

Una prima soluzione al problema consiste nella semplice concatenazione di stringhe tramite gli operatori \ ne +:

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

Se preferisci una variante meno lenta e leggermente più bella, aggiungi una barra rovesciata alla fine di ogni riga:

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

In alternativa, puoi anche utilizzare il metodo di unione e ottenerlo:

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

Se, d'altra parte, i tuoi occhi si illuminano di espressioni regolari, usa la seguente sintassi (match () filtra i valori tra i commenti):

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

Importante: se il codice viene minimizzato, questa soluzione può essere dimenticata (poiché vengono rimossi anche i commenti).

La variante più simpatica riesce con ECMA6 e l'aiuto delle stringhe di template:

var str = `Dies ist eine
mehrzeilige
Zeichenkette`;
Indietro