Ext中为String扩展了一个静态方法format用于实现对字符串类模板机制的格式化。
如String.format("{0},{1},{2}","a","b","c");返回a,b,c。
看了一下其实现方式觉得比较优雅,而且该函数在实际当中也很有实用价值,于是自己就将其略加改造,实现对字符串的模板替换。
代码如下:
主要用replace+巧妙的正则实现。
调用方式很简单,首先建立一个模板字符串。如a="{0},{1}",每个模板字符用{数字}表示。
然后直接调用a.template("arg1","arg2","arg3");
传入的参数与模板中定义的模板字符会对应着被替换。
如String.format("{0},{1},{2}","a","b","c");返回a,b,c。
看了一下其实现方式觉得比较优雅,而且该函数在实际当中也很有实用价值,于是自己就将其略加改造,实现对字符串的模板替换。
代码如下:
String.prototype.template
=
function
(){
var args = arguments;
return this .replace( / \{(\d + )\} / g, function (m, i){
return args[i];
});
}
var a = " arg1:{0},arg2:{1},arg3:{2} " ;
alert(a.template( " a " , " b " , " c " )); // arg1:a,arg2:b,arg3:c
alert(a.template( " 1 " , " 2 " , " 3 " )); // arg1:1,arg2:2,arg3:3
var args = arguments;
return this .replace( / \{(\d + )\} / g, function (m, i){
return args[i];
});
}
var a = " arg1:{0},arg2:{1},arg3:{2} " ;
alert(a.template( " a " , " b " , " c " )); // arg1:a,arg2:b,arg3:c
alert(a.template( " 1 " , " 2 " , " 3 " )); // arg1:1,arg2:2,arg3:3
主要用replace+巧妙的正则实现。
调用方式很简单,首先建立一个模板字符串。如a="{0},{1}",每个模板字符用{数字}表示。
然后直接调用a.template("arg1","arg2","arg3");
传入的参数与模板中定义的模板字符会对应着被替换。