搜索:
首页 >> JavaScript >> Js高级编程 >> 一个功能更强大的字符串格式化函数

一个功能更强大的字符串格式化函数

2008-4-30 作者:月影 来源:无忧脚本 投递文章

This is a {t}. {name}是一个很强大的字符串模板解析方法。

它接受三个参数,分别是{args.text},{args.object},(可选的){args.decorator}
它最直接的用法是将{args.text}所表示的字符串中用"{{}"和"{}}"包含起来的字符串解析成object的属性。

例如: System.substitute("{{}a{}} love {{}b{}}.", {{}a:"I", b:"you"{}});

将得到{a} love {b}.

值得注意的是,模板替换可以支持多级属性替换,例如本例子中的{{}args.text{}},还可以支持表达式

例如{{}x{}}+{{}y{}} = {{}x+y{}} => {x} + {y} = {x+y}

 

/**
 * 判定一个对象是否被定义过
 */
Object.defined = function(obj, prop){
    return typeof(obj) != 'undefined' && (prop == null || obj.hasOwnProperty(prop));
};
System = {};
System.substitute = function(s, o, f){
    
    var patternExpr = /{([^{}]*)}/g
    s = s.replace(patternExpr, function(s,a){
            if(!a) return '';
            try{
                var r = eval("with(o){"+s+"}");
                return Object.defined(r)?(f?f(r):r):'';
            }catch(ex){return "{"+s+"}";}
    });
    return s;
};

[提示:你可先修改部分代码,再按运行]

Tags:字符串  格式化  函数 
相关文章
手机版 Js高级编程 Asp之家 Aspxhome.com
闽ICP备06017341号