javascript String.format實現:挺精巧的,其中關鍵一點是replace方法的參數(可以為RegExp),以及js的閉包。如果對閉包有疑惑請Google一下。
代碼<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>
程式碼分析:
代碼
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"));//輸出結果
來源參考:
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/