为了解决拼接字符串的时候混乱的加号,根据printf函数设计了这个buildString函数

function buildString(str,paraList){
    //占位符前后修饰符
	var prefix="\\{\\{", surfix="\\}\\}";
	//正则表达式字符串
	var regStr = prefix + "(.+?)" + surfix;
	//新建正则表达式
	var regExp = new RegExp(regStr,"mg");
	
	if (!str){
        //没有参数时返回空字符串
		return "";
	}
	else if (str && arguments.length == 1){
        //只有一个参数时返回本身
		return str;
	}
	else if (arguments.length >= 2 && ((typeof paraList) == "string")){
        //字符串传参数时转换参数变成数组
		paraList = Array.prototype.splice.call(arguments,1);
		return bulidStr(str,paraList);
	}else{
        //数组或对象传参数
		return bulidStr(str,paraList);
	}
	//功能函数,替换并返回
	function bulidStr(str,paraList){
		var ret = str.replace(regExp,function(full,key){
			return paraList[key];
		});
		return ret;
	}
}

使用:

//使用对象传参,占位符使用属性名
var id="myID",myclass="myclass";
buildString("<div id=\'{{id}}\' class=\'{{myclass}}\' ></div>",{id:id,myclass:myclass});
//输出: "<div id=\'myID\' class=\'myclass\' ></div>"

//使用数组传参,占位符使用数组下标
var id="myID",myclass="myclass";
buildString("<div id=\'{{0}}\' class=\'{{1}}\' ></div>",[id,myclass]);
//输出: "<div id=\'myID\' class=\'myclass\' ></div>"

//使用字符串传参,占位符使用下标,字符串一次传入,位置从0开始
var id="myID",myclass="myclass";
buildString("<div id=\'{{0}}\' class=\'{{1}}\' ></div>",id,myclass);
//输出: "<div id=\'myID\' class=\'myclass\' ></div>"

版权声明:本文为cnjs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cnjs/p/5250136.html