252 votes

Comment mettre des variables à l'intérieur des chaînes de caractères Javascript?

s = 'bonjour %s, comment vas-tu' % (mon_nom)

C'est ainsi que vous le faites en python. Comment pouvez-vous le faire en javascript/node.js ?

2 votes

Je suis sûr qu'il y avait un épouvantail es-next quelque part pour faire var s = 'hello ${my_name}, how are you doing';

1 votes

J'utilise comme l'a dit Raynos: `const poem = "La rivière noire"; const author = "Joseph Troll"; const favePoem = `Mon poème préféré est ${poem} de ${author}\`; Ou vous pouvez utiliser: console.log('%s est %d.', 'Onze', 11);

3 votes

La modélisation normale est disponible depuis des années maintenant MAIS VOUS DEVEZ UTILISER LES BACKTICKS stackoverflow.com/a/37245773/294884 stackoverflow.com/a/37245773/294884 stackoverflow.com/a/37245773/294884 stackoverflow.com/a/37245773/294884

492voto

Sridhar Points 5668

Avec Node.js v4, vous pouvez utiliser les chaînes de caractères de modèles d'ES6

var my_name = 'John';
var s = `hello ${my_name}, how are you doing`;
console.log(s); // prints hello John, how are you doing

Vous devez envelopper la chaîne de caractères avec des ` (accent grave) au lieu de ' (apostrophe)

1 votes

Plus 1 parce que nous sommes en 2017 et ES6 est pratiquement la norme dans le monde de Node.

1 votes

C'est maintenant (2017) la réponse correcte. Notez que vous aurez besoin de Babel dans votre chaîne d'outils pour prendre en charge les anciens navigateurs.

4 votes

J'ai suggéré aux développeurs node.js qu'il serait vraiment utile de faire comprendre sur des pages telles que nodejs.org/api/readline.html que c'est un backtick. Il y avait un problème à ce sujet ici : github.com/nodejs/docs/issues/55

190voto

Felix Kling Points 247451

Note, à partir de 2015, utilisez simplement des backticks pour le formatage de modèle

let a = `hello ${name}`    // NOTE!!!!!!!! ` not ' or "

Notez qu'il s'agit d'un backtick, pas d'une citation.


Si vous voulez quelque chose de similaire, vous pourriez créer une fonction :

function parse(str) {
    var args = [].slice.call(arguments, 1),
        i = 0;

    return str.replace(/%s/g, () => args[i++]);
}

Utilisation :

s = parse('hello %s, how are you doing', my_name);

Il ne s'agit que d'un exemple simple et ne tient pas compte des différents types de données (comme %i, etc) ou de l'échappement de %s. Mais j'espère que cela vous donne une idée. Je suis assez sûr qu'il existe également des bibliothèques qui proposent une fonction comme celle-ci.

63voto

Terrence Points 849

Si vous utilisez ES6, alors vous devriez utiliser les modèles de texte.

//vous pouvez le faire
let sentence = `Mon nom est ${ user.name }. Enchanté de vous rencontrer.`

en savoir plus ici.

1 votes

C'est une meilleure réponse actuelle.

48voto

Jim Schubert Points 10234

util.format le fait.

Cela fera partie de v0.5.3 et peut être utilisé comme ceci :

var uri = util.format('http%s://%s%s', 
      (useSSL?'s':''), apiBase, path||'/');

3 votes

C'est gentil, merci pour le conseil! console.log('%s', value) devrait également fonctionner.

0 votes

Travail toujours en v14.15.4!

0 votes

Ainsi que 16.0.0 lol

45voto

Andrew_1510 Points 2028

Dès node.js >4.0, il devient de plus en plus compatible avec la norme ES6, où la manipulation de chaînes s'est fortement améliorée.

La réponse à la question originale peut être aussi simple que :

var s = `hello ${my_name}, comment ça va`;
// note : tilde ` au lieu de guillemet simple '

Lorsque la chaîne peut se propager sur plusieurs lignes, les modèles ou les processus HTML/XML deviennent assez faciles. Plus de détails et plus de capacités à ce sujet : Les littéraux de modèle sont des littéraux de chaîne sur mozilla.org.

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