字符串格式化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);