Você pode tirar proveito dos Literais de Modelo e usar esta sintaxe:
`String text ${expression}`
Os literais de modelo são delimitados por back-tick (``) (acento grave) em vez de aspas duplas ou simples.
Esse recurso foi introduzido no ES2015 (ES6).
Exemplo
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b}.`);
// "Fifteen is 15.
Quão legal é isso?
Bônus:
Ele também permite seqüências de várias linhas em javascript sem escapar, o que é ótimo para modelos:
return `
<div class="${foo}">
...
</div>
`;
Suporte do navegador :
Como essa sintaxe não é suportada por navegadores mais antigos (principalmente o Internet Explorer), convém usar o Babel / Webpack para transpilar seu código no ES5 para garantir que ele seja executado em qualquer lugar.
Nota:
A partir do IE8 +, você pode usar a formatação básica de cadeias dentro console.log
:
console.log('%s is %d.', 'Fifteen', 15);
// Fifteen is 15.
"${foo}"
é literalmente $ {foo}`${foo}`
é o que você realmente querFifteen is ${a + b}.
); não mudou dinamicamente. ele sempre mostra Quinze é 15.Antes do Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge, não era possível em javascript. Você teria que recorrer a:
fonte
Antes do Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge, no. Embora você possa tentar o sprintf para JavaScript para chegar até o meio do caminho:
fonte
bem, você poderia fazer isso, mas não é esp geral
Você pode escrever facilmente uma função que faça isso de forma inteligente se realmente precisar
fonte
Resposta completa, pronta para ser usada:
Ligar como
Para anexá-lo ao String.prototype:
Então use como:
fonte
Você pode usar esta função javascript para fazer esse tipo de modelagem. Não há necessidade de incluir uma biblioteca inteira.
Saída :
"I would like to receive email updates from this store FOO BAR BAZ."
O uso de uma função como argumento para a função String.replace () fazia parte da especificação do ECMAScript v3. Veja esta resposta SO para mais detalhes.
fonte
Se você gosta de escrever CoffeeScript, pode fazer:
O CoffeeScript é realmente javascript, mas com uma sintaxe muito melhor.
Para uma visão geral do CoffeeScript, consulte este guia para iniciantes .
fonte
Se você está tentando fazer uma interpolação para microtemplating, eu gosto do Mustache.js para esse fim.
fonte
Eu escrevi este pacote npm stringinject https://www.npmjs.com/package/stringinject que permite que você faça o seguinte
que substituirá {0} e {1} pelos itens da matriz e retornará a seguinte string
ou você pode substituir espaços reservados por chaves e valores de objetos da seguinte forma:
fonte
Eu usaria o back-tick ``.
Mas se você não souber
name1
quando criarmsg1
.Por exemplo, se
msg1
de uma API.Você pode usar :
Ele será substituído
${name2}
por seu valor.fonte
Não veja nenhuma biblioteca externa mencionada aqui, mas a Lodash possui
_.template()
,https://lodash.com/docs/4.17.10#template
Se você já está usando a biblioteca, vale a pena conferir e, se você não estiver usando o Lodash, poderá sempre escolher métodos da npm
npm install lodash.template
para reduzir as despesas gerais.Forma mais simples -
Também existem várias opções de configuração -
Achei delimitadores personalizados mais interessantes.
fonte
Crie um método semelhante ao
String.format()
Javausar
fonte
Citação de paz de 2020:
fonte
Basta usar:
fonte
Uso:
fonte
var hello = "foo";
console.log (minha_string, olá)
fonte