3017 votes

Création de chaînes multilignes en JavaScript

J’ai le code suivant en Ruby. Je veux convertir ce code en JavaScript. Quel est le code équivalent en JS ?

3936voto

Anonymous Points 8757

JavaScript n’est pas une syntaxe ici-document. Vous pouvez échapper le littéral newline, toutefois, qui s’en rapproche :

1435voto

Devin G Rhode Points 3669

Javascript de Google style guide recommande d'utiliser la concaténation de chaîne au lieu de s'en échapper, les retours à la ligne, parce que ce dernier n'est pas une partie de ECMAscript:

Ne faites pas ceci:

var myString = 'A rather long string of English text, an error message \ actually that just keeps going and going -- an error \ message to make the Energizer bunny blush (right through \ those Schwarzenegger shades)! Where was I? Oh yes, \ you\'ve got an error and all the extraneous whitespace is \ just gravy. Have a nice day.';

Les espaces au début de chaque ligne ne peut pas être en toute sécurité dépouillé au moment de la compilation; les espaces après la barre oblique résultat sera difficile d'erreurs; et tandis que la plupart des moteurs de script de support, ce n'est pas une partie de ECMAScript.

Utiliser la concaténation de chaîne à la place:

var myString = 'A rather long string of English text, an error message ' + 'actually that just keeps going and going -- an error ' + 'message to make the Energizer bunny blush (right through ' + 'those Schwarzenegger shades)! Where was I? Oh yes, ' + 'you\'ve got an error and all the extraneous whitespace is ' + 'just gravy. Have a nice day.';

Mise à jour

Dans EcmaScript 6, vous serez capable d'utiliser les backticks pour les Chaînes du Modèle, connu dans la spécification comme une NoSubstitutionTemplate:

var htmlString = `Say hello to 
multi-line
strings!`;

Je pense que vous pouvez essayer cela et d'autres fonctionnalités en téléchargeant d'abord canary de chrome , puis en tournant sur Enable Experimental JavaScript

711voto

KooiInc Points 38845

le modèle `` n’est pas disponible en js (je me souviens il aide beaucoup dans mon bon vieux temps de Perl).

Pour garder le contrôle avec des chaînes complexes ou longs multilignes j’utilise parfois un modèle de tableau :

ou le modèle anonyme a déjà montré (saut de ligne de fuite), qui peut être un bloc laid dans votre code :

Voici un autre bizarre mais travail « truc » :

366voto

Jordão Points 29221

Vous pouvez avoir plusieurs lignes de chaînes de caractères en JavaScript.

Cette méthode est basée sur la fabrication en série de fonctions, qui est défini pour être dépendant de l'implémentation. Il fonctionne dans la plupart des navigateurs (voir ci-dessous), mais il n'y a aucune garantie que cela fonctionnera encore dans l'avenir, donc ne comptez pas sur elle.

À l'aide de la fonction suivante:

function hereDoc(f) {
  return f.toString().
      replace(/^[^\/]+\/\*!?/, '').
      replace(/\*\/[^\/]+$/, '');
}

Vous pouvez avoir ici-documents comme ceci:

var tennysonQuote = hereDoc(function() {/*!
  Theirs not to make reply,
  Theirs not to reason why,
  Theirs but to do and die
*/});

La méthode a été testé dans les navigateurs suivants (non mentionnés = non testé):

  • IE 4 - 10
  • Opera 9.50 - 12 (pas de 9)
  • Safari 4 - 6 (pas en 3-)
  • Chrome 1 - 27
  • Firefox 17 - 21 (pas 16)
  • Rekonq 0.7.0 - 0.8.0
  • Pas pris en charge dans Konqueror 4.7.4

Soyez prudent avec votre minifier, cependant. Il tend à supprimer les commentaires. Pour le YUI compressor, un commentaire commençant par /*! (comme celui que j'ai utilisé) sera conservé.

Je pense qu'une vraie solution serait d'utiliser CoffeeScript.

215voto

alex Points 186293
Tu peux le faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X