我如何将字符串转换为内插字符串?

har*_*mar 5 javascript regex string reactjs

我从后端收到一个字符串。让我们说

"Save Earth, ${name}"
Run Code Online (Sandbox Code Playgroud)

在前端,我正在使用javascript 我想知道如何name从获取字符串的变量进行绑定。

我知道 JS 中的字符串插值,如下所示

`Save Earth, ${name}`
Run Code Online (Sandbox Code Playgroud)

即使使用字符串插值也无济于事,我从后端获取正常字符串,如下所示:

  const name = "John"; 
  const response = "Save Earth, ${name}";
  console.log(`${response}`);
Run Code Online (Sandbox Code Playgroud)

我得到了什么

"Save Earth, ${name}"
Run Code Online (Sandbox Code Playgroud)

预期的

"Save Earth, John"
Run Code Online (Sandbox Code Playgroud)

注意:我不能使用字符串查找和替换方法,因为变量名可以是任何东西。

编辑:我是否只需要在这里使用Regextofind & replace方法。

为什么我要寻找另一种方法? 因为字符串可能很长,我觉得这会增加时间复杂度。

Rey*_*yno 3

查找和替换仍然可以与正则表达式一起使用。

您可以使用对象而不是单独的变量来替换您要替换的数据。然后在替换函数中,您可以传递一个函数作为第二个参数,该函数返回正确的数据。

对象的原因是我们无法通过名称访问变量(除非将它们添加到窗口对象中)。

const response = "${name} is ${age} years old!";

const data = {
  name: "John Doe",
  age: "42"
};

const replaceVariable = (match, inner) => {
  return data[inner] || "";
}

const replaced = response.replace(/\$\{(\w+)\}/gi, replaceVariable);

console.log(replaced);
Run Code Online (Sandbox Code Playgroud)