/**
* 字符串模版替换
*
* @param this 需要替换的字符串
* @param data 替换的数据。json格式的数据或者数组。
* eg:
* str:我是{{key1}}替换的字符串{{key2}}。 data:{key1:"替换",key2:"替换2"}
* str:我是{{key.subkey}}替换的字符串{{key.subkey2}}。 data:{key{subkey:"替换",subkey2:"替换2"}}
* str:我是{{0}}替换的字符串{{1}}。 data:["替换","替换2"]
* @returns
*/
String.prototype.template = function(data) {
var str = this;
if(data && data.sort){
for(var i=0; i<data.length; i++) {
str = str.replace(new RegExp("{\\{"+i+"}}", "gm"), data[i]);
}
return str;
}
var placeholder = str.match(new RegExp("{{.+?}}", 'ig'));
if (data && placeholder) {
for ( var i = 0; i < placeholder.length; i++) {
var key = placeholder[i];
var value = proxy.call(data, key.replace(new RegExp("[{,}]", "gm"), ""));
key = key.replace(new RegExp("\\\.", "gm"), "\\.").replace("{{","{\\{");
if (value == null)
value = " ";
str = str.replace(new RegExp(key, "gm"), value);
}
}
return str;
function proxy(key) {
try {
return eval('this.' + key);
} catch (e) {
return "";
}
}
};