采取“模板”字符串并将信息插入其中的最佳方法是什么。
例如:
var templateString = "Hello {name1}, my name is {name2}";
var name1 = "Phil";
var name2 = "Amy";
在用括号括起来的变量名称所在的位置插入值容易吗?我不仅需要此示例(因此,不能通过固定索引执行此操作),还需要对任何给定的模板字符串和任何给定数量的变量进行工作。
您可以使用ES2015模板文字。但是,应在使用变量之前对其进行定义。
var name1 = "Phil";
var name2 = "Amy";
var templateString = `Hello ${name1}, my name is ${name2}`;
console.log(templateString);
document.body.innerHTML = templateString;
对于ES2015之前的版本,您可以使用正则表达式替换变量。为此,可以创建具有搜索替换值的对象,并可以String#replace
使用功能作为参数的对象。
正则表达式\{([^}]*)\}
可用于匹配大括号括起来的字符串。
// Create an object of the key-value of search-replace
var obj = {
name1: "Phil",
name2: "Amy"
};
var templateString = "Hello {name1}, my name is {name2}";
// Use replace with callback function
var result = templateString.replace(/\{([^}]*)\}/g, function($0, $1) {
return obj[$1] || $0; // If replacement found in object use that, else keep the string as it is
});
console.log(result);
document.body.innerHTML = result;
RegEx说明:
\{
:匹配{
括号文字([^}]*)
:匹配}
零次或多次以外的任何其他次数,并将其添加到第一个捕获的组中。\}
:匹配}
括号文字g
:全局标志。匹配遵循此模式的所有可能的字符串。注意: $0
是完整的字符串,即{foo}
,$1
是第一个捕获的组foo
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句