字符串格式化
// 让人难以理解的拼接:
var str = '<div id="' + id + '" class=" + className + ">' + html + '</div>';
// 使用格式化:
var tpl = '<div id="${0}" class="${1}">${2}</div>',
str = baidu.format(tpl,
id,
className,
...
String.prototype.format = function (args) {
if (arguments.length > 0) {//参数大于0
var result = this;//result=当前调用的对象
if (arguments.length == 1 && typeof (args) == "object") {//只有一个参数传入
for (var key in args) {
var reg = new RegExp("({" + key + "})", "g");//正则匹配所有
/*
*replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
*语法
* stringObject.replace(regexp/substr,replacement)
*regexp/substr
* 必需。规定子字符串或要替换的模式的 RegExp 对象。
* 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 * RegExp对象。
* replacement必需。一个字符串值。规定了替换文本或生成替换文本的函数。
*/ result = result.replace(reg, args[key]);
}
}
else {
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] == undefined) {
return "";
}
else {
var reg = new RegExp("({[" + i + "]})", "g");
result = result.replace(reg, arguments[i]);
}
}
}
return result;
}
else {
return this;
}
};
上是formatd代码,将参数字符串参数转化为对象 进行格式化拼接
下面是调用方法
//两种调用方式
var template1="我是{0},今年{1}了";
var template2="我是{name},今年{age}了";
var result1=template1.format("lilei1111",22);
var result2=template2.format({name:"lilei",age:22});
//两个结果都是"我是loogn,今年22了"
字符串格式化话拼接如下:
var tpl = '<div id="{0}" class="{1}">{2}</div>',
str =tpl.format(
"d1",
"play-btn",
"<i>这是i</i>");
document.write(str);
var tpl = '<div id="{id}" class="{class}">{text}</div>',
str =tpl.format(
{id:"d1",
class:"play-btn",
text:"<i>这是i</i>"});
document.write(str);