gpt4 book ai didi

javascript - 变量上的字符串插值

转载 作者:行者123 更新时间:2023-12-03 03:20:36 26 4
gpt4 key购买 nike

假设我有一个变量str

var str = "123"

现在我可以执行 console.log(`Hello ${str}`) ,它将打印 Hello 123

现在我有另一个变量strnew

var strnew = 'Hello ${str}'

注意(基于答案/评论)- strnew 是从文件中读取的,因此它始终是一个字符串,不能用 `

替换

如何console.log(...)打印Hello 123

没有任何类型的eval()是否可能

最佳答案

通过像 ${str} 这样简单的内容,您可以使用简单的字符串替换:

var template = (tpl, args) => tpl.replace(/\${(\w+)}/g, (_, v) => args[v]);

var tpl = 'Hello ${str} and ${other}';

console.log(template(tpl, {str: 'foo', other: 'bar'}));

在一般情况下,不,没有 eval 是不可能的(除非编写自己的 js 解释器),因为 ${...} 可以包含任意表达式。

为了完整起见,这里是评估解决方案:

var template = function(tpl, args) {
var keys = Object.keys(args),
fn = new Function(...keys,
'return `' + tpl.replace(/`/g, '\\`') + '`');
return fn(...keys.map(x => args[x]));
};


function test() {
var myTpl = 'Hello ${str + "!"} and ${other.toUpperCase()}';
console.log(template(myTpl, {str: 'foo', other: 'bar'}));
}

test();

关于javascript - 变量上的字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41117799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com