String.prototype.format = function (args) { var formatted = 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"); formatted = formatted.replace(reg, args[key]); } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] != undefined) { var reg = new RegExp("({)" + i + "(})", "g"); formatted = formatted.replace(reg, arguments[i]); } } } } return formatted; } 复制代码 "我是{0},性别{1}".format("张三","男") // 我是张三,性别男 "我是{name},性别{sex}".format({name:"李四",sex:"女"}) // 我是李四,性别女
在.net c#中有非常简单易用的string.Format 静态函数可以做到: string.Format("http://wcf.open.cnblogs.com/blog/sitehome/paged/{0}/{1}", pageIndex, pageSize); 因为string.format这个功能用到的地方比较多, 所以就用js实现了一个简单的版本 : 复制代码 String.format = function () { var formatStr = arguments[0]; if ( typeof formatStr === ‘string‘ ) { var pattern, length = arguments.length; for ( var i = 1; i < length; i++ ) { pattern = new RegExp( ‘\\{‘ + ( i - 1 ) + ‘\\}‘, ‘g‘ ); formatStr = formatStr.replace( pattern, arguments[i] ); } } else { formatStr = ‘‘; } return formatStr; }; 复制代码 以上代码给javascript String类加了一个静态方法 format, 然后其用法就和c#的 string.format一模一样了, 测试如下: String.format(‘http://wcf.open.cnblogs.com/blog/sitehome/paged/{0}/{1}‘,1,20) 输出: "http://wcf.open.cnblogs.com/blog/sitehome/paged/1/20" String.format(‘{0}+{0}+{1}={2}‘,1,2,1+1+2) 输出: "1+1+2=4" String.format({name:‘leonwang‘},‘hello,world‘) 输出: "" 如果第一个参数不是string类型, 就简单返回空string, 不做进一步处理。
原文:https://www.cnblogs.com/turnip/p/13041543.html