Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在字符串中的特定位置插入变量?_Javascript_String_Insert - Fatal编程技术网

Javascript 如何在字符串中的特定位置插入变量?

Javascript 如何在字符串中的特定位置插入变量?,javascript,string,insert,Javascript,String,Insert,获取“模板”字符串并将信息插入其中的最佳方法是什么 例如: var templateString = "Hello {name1}, my name is {name2}"; var name1 = "Phil"; var name2 = "Amy"; 在大括号包围的变量名所在的位置插入值是否有一个简单的名称?我需要它不仅适用于这个示例(因此,通过固定索引执行它不是一个选项),而且适用于任何给定的模板字符串和任何给定数量的变量。ES6有字符串插值,您可以这样做 var name1=“Phil

获取“模板”字符串并将信息插入其中的最佳方法是什么

例如:

var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";

在大括号包围的变量名所在的位置插入值是否有一个简单的名称?我需要它不仅适用于这个示例(因此,通过固定索引执行它不是一个选项),而且适用于任何给定的模板字符串和任何给定数量的变量。

ES6有字符串插值,您可以这样做

var name1=“Phil”;
var name2=“艾米”;
var templateString=`Hello${name1},我的名字是${name2}`;

document.write(templateString)ES6有字符串插值,您可以这样做

var name1=“Phil”;
var name2=“艾米”;
var templateString=`Hello${name1},我的名字是${name2}`;
document.write(templateString)您可以使用ES2015。但是,在使用变量之前,应该先定义它们

var name1=“Phil”;
var name2=“艾米”;
var templateString=`Hello${name1},我的名字是${name2}`;
log(templateString);
document.body.innerHTML=模板字符串您可以使用ES2015。但是,在使用变量之前,应该先定义它们

var name1=“Phil”;
var name2=“艾米”;
var templateString=`Hello${name1},我的名字是${name2}`;
log(templateString);

document.body.innerHTML=模板字符串您可以使用javascript函数replace:

所以你的代码应该是:

var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";

templateString = templateString.replace('{name1}', name1);
templateString = templateString.replace('{name2}', name2);

如果这不起作用,请告诉我。

您可以使用javascript函数替换:

所以你的代码应该是:

var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";

templateString = templateString.replace('{name1}', name1);
templateString = templateString.replace('{name2}', name2);

如果这不起作用,请告诉我。

在ES5中,您可以使用String.replace:

var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";

templateString.replace(/\{([^}]*)\}/g, function (m, v) { return eval(v) || m; })
请注意,不建议使用eval。如果在对象中设置名称,可以执行以下操作:

var templateString = "Hello {name1}, my name is {name2}";
var names = {};
names.name1 = "Phil";
names.name2 = "Amy";

templateString.replace(/\{([^}]*)\}/g, function (m, v) { return names[v] || m; })

在ES5中,可以使用String.replace:

var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";

templateString.replace(/\{([^}]*)\}/g, function (m, v) { return eval(v) || m; })
请注意,不建议使用eval。如果在对象中设置名称,可以执行以下操作:

var templateString = "Hello {name1}, my name is {name2}";
var names = {};
names.name1 = "Phil";
names.name2 = "Amy";

templateString.replace(/\{([^}]*)\}/g, function (m, v) { return names[v] || m; })

更好的参考:同样是FWIW,这个答案中显示的代码将只替换每个令牌的第一次出现。如果任何东西被使用不止一次,它将不会被拾取。更好的参考:也是FWIW,这个答案中显示的代码将只替换每个令牌的第一次出现。如果任何东西被使用不止一次,它就不会被拾起。您还可以将
窗口
用于全局或作用域的对象contexts@ThomasZwaagstra是的,你可以。但这被认为是不好的做法,我不建议这样做。使用对象是更好的方法。你会考虑原型模式吗?如果你已经在一个对象上下文中,你可能已经有了一个变量集为+1的可行对象。我正要写下几乎完全相同的答案。您还可以将
窗口
用于全局或作用域的对象contexts@ThomasZwaagstra是的,你可以。但这被认为是不好的做法,我不建议这样做。使用对象是更好的方法。你会考虑原型模式吗?如果您已经在一个对象上下文中,那么您可能已经有了一个带有变量集的可行对象