Как преобразовать строку в шаблонную строку (template literals)
Получаю из базы строку blabal ${param} blabla
Как ее преобразовать в шаблонную строку, чтобы она воспринималась как `blabal ${param} blabla` |
боюсь, что только eval :(
var str = "blabal ${param} blabla";
var param = 123;
alert(eval('`' + str + '`'));
если в этих строках из базы как-то зафиксирован набор возможных параметров, то лучше через new Function например, возможен только "param":
var str = "blabal ${param} blabla";
var param = 123;
var func = new Function('param', 'return `' + str + '`;');
alert(func(param));
а если набор параметров не зафиксировал, то все не очень правильно - идет завязка данных из базы на js-код. |
Спасибо. В итоге решил через регулярки, но чета не заменяет:
var content = '${start_time} и не ${end_time} включительно.';
var param={'end_time':'007'}
for(var key in param){
content = content.replace(new RegExp('\${'+key+'}','g'),param[key])
}
Не поймк че не так( |
daima,
var content = '${start_time} и не ${end_time} включит${end_time}ельно.';
var param={'end_time':'007'}
for(var key in param){
content = content.split('${'+key+'}').join(param[key]);
}
alert(content);
|
daima,
\\$ |
daima,
через регулярки лучше так:
var content = '${start_time} и не ${end_time} включительно.';
var param={'end_time':'007'}
content = content.replace(/\$\{([a-z0-9_-]+)\}/g, function(m, key) {
return param[key] || m;
});
alert(content);
|
| Часовой пояс GMT +3, время: 16:40. |