字符串格式化html
// 让人难以理解的拼接: 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了"
字符串格式化话拼接以下:this
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);