替换多次出现的动态字符串
Replacing multiple occurrences of dynamic strings?
我不确定我是否可以在标题中解释得更好,但我会在这里解释得更好。我试图创建一个功能,将作为一个简单的"模板"。我输入一个带有特定标签的字符串"{{name}}",它将用特定的字符串替换它。
到目前为止是这样的:
调用函数:
loadTemplate("<div>{{name}}, {{anotherString}}</div>", {
name: "Hunter",
anotherString: "is amazing!!!!"
});
函数:// Created this to make my life easier :)
function loadTemplate(template, data) {
var tags = template.split("{{").pop().split("}}").shift();
console.log(tags); // This only gives me the last occurrence.
}
我如何循环通过所有的{{变量}}的出现在我的字符串,所以我可以用相关的数据替换它?
类似于Handlebars.js
(我想要一个超级轻量级和快速的功能,而不是一个完整的插件)
这很容易做到,使用一个回调的替换文本的正则表达式替换:
function loadTemplate(template, data) {
return template.replace(/'{'{('w+)'}'}/g, function(match, key) {
return data[key];
});
}
alert(loadTemplate("<div>{{name}}, {{anotherString}}</div>", {
name: "Hunter",
anotherString: "is amazing!!!!"
}));
模式是'{'{('w+)'}'}
,意思是{{
,然后是捕获的单词,然后是}}
。单词是由字母、数字和下划线组成的任意序列。
如果您希望能够使用不包含}}
的任何键值(例如,使用空格),您可以将'w+
替换为.+?
:
function loadTemplate(template, data) {
return template.replace(/'{'{(.+?)'}'}/g, function(match, key) {
return data[key];
});
}
alert(loadTemplate("<div>{{The Name}}, {{Another $tring}}</div>", {
"The Name": "Hunter",
"Another $tring": "is amazing!!!!"
}));
对data
对象中的每个键进行搜索/替换:
function loadTemplate(template, data) {
var RE, d;
for(d in data) {
RE= new RegExp('{{'+d+'}}', 'g');
template= template.replace(RE, data[d]);
}
console.log(template);
}
loadTemplate("<div>{{name}}, {{anotherString}}</div>", {
name: "Hunter",
anotherString: "is amazing!!!!"
});
我喜欢你的"拆分"想法,我说坚持下去:
window.loadTemplate = function(template, data) {
var i = 0;
var bool = true;
while (bool) {
try {
var tags = template.split("{")[i+2].split("}")[0];
alert(tags);
i+=2;
} catch (e)
{
bool = false;
}
}
}
td {
border: black solid 1px;
}
<button type="button" onclick="loadTemplate('<div>{{name}}, {{anotherString}}</div>', {name: 'Hunter', anotherString: 'is amazing!!!!' })">Load Template</button>
相关文章:
- javascript在动态Url中匹配并添加字符串
- 获取动态字符串的属性
- 使用 javascript 替换动态字符串值
- 如何在动态字符串上使用 JavaScript replace()
- 使用正则表达式完全替换动态字符串,如果它嵌入到另一个字符串中,则不要替换
- * ng用于数组的动态字符串插值
- 为元素的ID分配一个动态字符串
- 使用jquery在动态字符串中查找元素
- Javascript构建动态字符串
- 如何在javascript闭包调用中生成动态字符串
- 在JQuery中从字符串中移除动态字符串
- 在angularJS中绑定数据时进行动态字符串拆分
- 将包含脚本的动态字符串插入HTML并动态执行它
- 将动态字符串值传递给函数
- Javascript:将动态字符串与数组进行匹配
- 如何在CEF3中使用JavaScript访问C++中的动态字符串值
- 在动态字符串中,如何从某个字符开始子字符串并在某个字符结束
- 将具有特殊字符的动态字符串变量传递给JQuery函数
- 替换多次出现的动态字符串
- 动态字符串[]用于twitter提前输入