A JavaScript Fancier

伟大的javascript技术研究中...

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks


Ext中为String扩展了一个静态方法format用于实现对字符串类模板机制的格式化。

如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

主要用replace+巧妙的正则实现。

调用方式很简单,首先建立一个模板字符串。如a="{0},{1}",每个模板字符用{数字}表示。
然后直接调用a.template("arg1","arg2","arg3");
传入的参数与模板中定义的模板字符会对应着被替换。

posted on 2007-12-05 17:44 Yemoo'S JS Blog 阅读(2099) 评论(2)  编辑 收藏 引用 所属分类: javascript技巧总结

评论

# re: 用js实现模板替换机制 2007-12-12 17:57 Sam Lin
请问一下以上的函数中的m和i的关系,各它们之间是怎么传值 的??
谢谢  回复  更多评论
  

# re: 用js实现模板替换机制 2007-12-18 22:27 Yemoo'S JS Blog
@Sam Lin
m:匹配的字符串,i:第一个括号匹配的所有内容,具体看下javascript参考手册对replace的解释就明白了
  回复  更多评论
  

只有注册用户登录后才能发表评论。