web-dev-qa-db-fra.com

Comment briser une chaîne sur plusieurs lignes de code en JavaScript?

Y a-t-il un caractère en JavaScript pour rompre une ligne de code afin qu'elle soit lue de manière continue malgré le fait qu'elle soit sur une nouvelle ligne?

Quelque chose comme....

1. alerte ("Veuillez sélectionner le fichier 
 2.\à supprimer"); 
181
T.T.T.

Dans votre exemple, vous pouvez diviser la chaîne en deux parties:

alert ( "Please Select file"
 + " to delete");

Ou, quand c'est une chaîne, comme dans votre cas, vous pouvez utiliser un barre oblique inverse comme suggéré par @Gumbo:

alert ( "Please Select file\
 to delete");

Notez que cette approche de barre oblique inversée est pas nécessairement préférée , et n'est peut-être pas universellement prise en charge (j'ai eu du mal à trouver des données fiables à ce sujet). Ce n'est pas dans le spéc. ECMA 5.1 .

Lorsque vous travaillez avec un autre code (pas entre guillemets), les sauts de ligne sont ignorés et parfaitement acceptables. Par exemple:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
251
Michael Haren

Mettez la barre oblique inverse à la fin de la ligne:

alert("Please Select file\
 to delete");

Edit Je dois noter que cela fait pas une partie de chaînes ECMAScript as caractères de fin de ligne ne sont pas autorisés du tout:

Un caractère ' LineTerminator ' ne peut pas apparaître dans un littéral de chaîne, même s'il est précédé d'une barre oblique inverse \. La méthode correcte pour faire en sorte qu'un caractère de fin de ligne fasse partie de la valeur de chaîne d'un littéral de chaîne consiste à utiliser une séquence d'échappement telle que \n ou \u000A.

Donc, utiliser la concaténation de chaînes est le meilleur choix.


Mise à jour 2015-01-05 Les littéraux de chaîne dans ECMAScript5 autorisent la syntaxe mentionnée:

Un caractère de fin de ligne ne peut pas apparaître dans un littéral de chaîne, sauf s'il fait partie d'un LineContinuation pour produire la séquence de caractères vide. La méthode correcte pour faire en sorte qu'un caractère de fin de ligne fasse partie de la valeur String d'un littéral de chaîne consiste à utiliser une séquence d'échappement telle que \n ou \u000A.

41
Gumbo

ECMAScript 6 introduit chaînes de modèle :

Les chaînes de modèle sont des littéraux de chaîne permettant des expressions incorporées. Vous pouvez utiliser des chaînes multilignes et des fonctions d'interpolation de chaînes.

Par exemple,

alert(`Please Select file   
to delete`);

va alerter

Please Select file   
to delete
28
Oriol

Casser la ficelle en deux morceaux

alert ("Please select file " +
       "to delete");
6
Jason Punyon

Intéressant à noter. A essayé:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

Et cela a fonctionné. Cependant, accidentellement !, il y avait un caractère espace après la dernière barre oblique inverse (toutes les autres barres obliques inverses étaient à la fin de la ligne). Et cela a provoqué une erreur dans le javascript! Supprimer cet espace a cependant corrigé l'erreur.

Ceci est dans ADT pour Android à l'aide de Cordova.

4
There

Vous pouvez simplement utiliser

1:  alert("Please select file" +
2:        " to delete");

Cela devrait fonctionner

1
Jaime Garcia

Vous pouvez diviser une constante chaîne longue en fragments logiques et les affecter à un tableau. Ensuite, faites un join avec une chaîne vide comme délimiteur.

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

La sortie sera:

  1. Ceci est la première partie .... 2. Ceci est la deuxième partie ..... 3. En terminant ici.

Cette performance est légèrement compromise, mais vous gagnez en lisibilité et en maintenabilité du code.

0
blackcatweb