源于C#中的string.Format()
String.prototype.format = function(args) { var result = this; if (arguments.length > 0) { if (arguments.length == 1 && typeof (args) == "object") { for ( var key in args) { if(args[key]!=undefined){ var reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } else { for ( var i = 0; i < arguments.length; i++) { if (arguments[i] != undefined) { // var reg = new RegExp("({[" + i + "]})", "g");//这个在索引大于9时会有问题,谢谢 何以笙箫的指出 var reg= new RegExp("({)" + i + "(})", "g"); result = result.replace(reg, arguments[i]); } } } } return result; }
// 两种调用方式 var template1 = " 我是{0},今年{1}了 " ; var template2 = " 我是{name},今年{age}了 " ; var result1 = template1.format( " loogn " , 22 ); var result2 = template2.format({name: " loogn " ,age: 22 }); // 两个结果都是"我是loogn,今年22了"