为了账号安全,请及时绑定邮箱和手机立即绑定

用使用该字符串作为变量名的变量替换某些字符串

用使用该字符串作为变量名的变量替换某些字符串

慕娘9325324 2022-11-11 16:59:31
我有一些动态创建的变量。所有变量都使用双下划线('__')作为前缀。所以我想要做的是用变量替换句子中包含双下划线前缀的任何字符。这是一个例子:输入var __total = 8; var sentence = "There are __total planets in the solar system";预期结果太阳系中有8颗行星这是我解析字符串的正则表达式,但它返回未定义:sentence.replace(/__(\w+)/gs,window['__' + "$1"]);
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您的代码不起作用的原因是因为window['__' + "$1"]首先评估,所以:


sentence.replace(/__(\w+)/gs,window['__' + "$1"]);

...变成:


sentence.replace(/__(\w+)/gs, window['__$1']);

由于window['__$1']window 对象上不存在,这会导致undefined,因此您会得到:


sentence.replace(/__(\w+)/gs, undefined);

这就是导致您获得undefined结果的原因。相反,您可以使用替换函数.replace()从第二个参数中获取组,然后将其用于回调返回的替换值:


var __total = 8;

var sentence = "There are __total planets in the solar system";


const res = sentence.replace(/__(\w+)/gs, (_, g) => window['__' + g]);

console.log(res);

但是,像这样访问窗口上的全局变量并不是最好的主意,因为这不适用于局部变量或使用letor声明的变量const。我建议您创建自己的对象,然后您可以像这样访问它:


const obj = {

  __total: 8,

};


const sentence = "There are __total planets in the solar system";

const res = sentence.replace(/__(\w+)/gs, (_, g) => obj['__' + g]);


console.log(res);


查看完整回答
反对 回复 2022-11-11
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

你可以eval()在这里使用一个例子:


let __total = 8;


let str = "There are __total planets in the solar system ";

let regex = /__(\w+)/g;

let variables = str.match(regex);

console.log(`There are ${eval(variables[0])} planets in the solar system`)

let __total = 8;


let str = "There are __total planets in the solar system ";

let regex = /__(\w+)/g;

let variables = str.match(regex);


console.log(`There are ${eval(variables[0])} planets in the solar system`)


查看完整回答
反对 回复 2022-11-11
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您必须拆分句子并使用变量来获取分配给它的值。

所以你必须使用'+'号来分割和添加到句子中

因此,您只需使用正则表达式即可找到该词。假设您将其存储在名为myVar的变量中。然后你可以使用下面的代码: sentence.replace(myVar,'+ myVar +');

所以你的最终目标是让你的句子像:

sentence = "There are "+__total+" planets in the solar system";


查看完整回答
反对 回复 2022-11-11
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信