javascript String.format实现:挺精巧的,其中关键一点是replace方法的参数(可以为RegExp),以及js的闭包。如果对闭包有疑惑请Google一下。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
<
script type
=
"
text/javascript
"
>
// V1 method
String.prototype.format = function ()
{
var args = arguments;
return this .replace( / \{(\d+)\} / g,
function (m,i){
return args[i];
});
}
// V2 static
String.format = function () {
if ( arguments.length == 0 )
return null ;
var str = arguments[ 0 ];
for ( var i = 1 ;i < arguments.length;i ++ ) {
var re = new RegExp( ' \\{ ' + (i - 1 ) + ' \\} ' , ' gm ' );
str = str.replace(re, arguments[i]);
}
return str;
}
var a = " I Love {0}, and You Love {1},Where are {0}! {4} " ;
alert(String.format(a, " You " , " Me " ));
alert(a.format( " You " , " Me " ));
< / script>
// V1 method
String.prototype.format = function ()
{
var args = arguments;
return this .replace( / \{(\d+)\} / g,
function (m,i){
return args[i];
});
}
// V2 static
String.format = function () {
if ( arguments.length == 0 )
return null ;
var str = arguments[ 0 ];
for ( var i = 1 ;i < arguments.length;i ++ ) {
var re = new RegExp( ' \\{ ' + (i - 1 ) + ' \\} ' , ' gm ' );
str = str.replace(re, arguments[i]);
}
return str;
}
var a = " I Love {0}, and You Love {1},Where are {0}! {4} " ;
alert(String.format(a, " You " , " Me " ));
alert(a.format( " You " , " Me " ));
< / script>
代码分析:
代码
String.prototype.format
=
function
()
{
var args = arguments;
return this .replace( / \{(\d+)\} / g,
function (s,i){
document.writeln( " s: " + s + " i: " + i); // 输出相应的参数 结果:s:{0}i:0 s:{1}i:1
return args[i];
});
}
alert( " {0}-{1} " .format( " 1 " , " 2 " )); // 输出结果
{
var args = arguments;
return this .replace( / \{(\d+)\} / g,
function (s,i){
document.writeln( " s: " + s + " i: " + i); // 输出相应的参数 结果:s:{0}i:0 s:{1}i:1
return args[i];
});
}
alert( " {0}-{1} " .format( " 1 " , " 2 " )); // 输出结果
来源参考:
V1:http://samlin.cnblogs.com/archive/2008/01/25/1053610.html
V2:http://www.cnblogs.com/hwade/articles/867767.html
String.replace的特殊用法:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace
String.replace的妙用:
http://www.codebit.cn/pub/html/javascript/tip/javascript_replace/