用正则实现字符参数可配置化

作者:沙师弟时间:2013-07-23
在写javascript应用的时候,大家可能会遇到这样的问题,如果要动态输出一串字符串,然后在调用插件的时候要实现可配置化那么就比较不好实现了,例如,我要写一个tip的提示插件,而其中的文字是固定的,但是数字是变化的:
/*插件*/
var tip = function(o){
	var str = o.pageStatMessage + o.draggingMessage;
	console.log(str)
}

/*调用*/
tip({
	pageStatMessage:'共{total}条',
	draggingMessage:'{count}行'
})
那么,在console将会输出“共{total}条{count}行”,这样的字眼。那如果我要实现{total}和{count}动态输出,怎么办呢?有人说,我可以用拼接的方式,当然可以,但今天我不是要来将拼接的方式,转牛角尖的同学请绕行。 我在调用时,
/*调用*/
tip({
    total:1,
    count:2,
    pageStatMessage:'共{total}条,有',
    draggingMessage:'{count}行。'
})
只需要改变total和count,就可以动态输出我们想要的结果,怎么办呢?那么,我们可以用正则replace()方法替换就能实现我们所要的:
/*插件*/
var tip = function(o){
	var pageStatMessage = o.pageStatMessage || '共{total}条',
	    draggingMessage = o.draggingMessage || '{count}行',
	    str             = pageStatMessage + draggingMessage,
	    totalReg        = /{total}/,
	    countReg        = /{count}/;
		
	/*替换*/
	str = str.replace(totalReg, o.total);
	str = str.replace(countReg, o.count);
	console.log(str)
}