Как преобразовать строку в шаблонную строку (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, время: 13:53. |