字符串模板替换

此方法使用字符串分割进行的内容替换,可解决使用正则表达式替换时的$1、$2....问题
/**
 * 字符串模板格式化
 * 用法1:
 * 	var s = "<div>成功&{successNum}个</div>";
 * 	s.format({successNum:20});  //s= "<div>成功20个</div>";
 * 用法2:
 * 	var s = "<option value="&{value}">&{text}</option>";
 * 	s.format([{value:1,text:'a'},{value:2,text:'b'}]); //s= "<option value="1">a</option><option value="2">b</option>";
 *
 */
var formatStrReplace = function(data, result){
    for(var key in data){
		result = returnStringReplaceResult(result, '&{' + key + '}', data[key], false);
    }
    return result;
};




//字符串替换
/*
 *字符串内容替换,strings=原字符串,replaces=原字符串中要替换的字符,replaceResult=更换掉要替换的字符,istoLowerCase=是否要忽略大小写(true=是,false=否);
 * 如:returnStringReplaceResult('abc','A','d',true) => 'dbc';
 *     returnStringReplaceResult('abc','A','d',false) => 'abc';
 *     istoLowerCase不传则默认false,istoLowerCase只能传boolean类型,如果是其他的也默认为false
 * 如果replaceResult参数不传,则默认把要替换的值去除,('abc','a','',false) => 'bc'
 * */
var returnStringReplaceResult = function (strings, replaces, replaceResult, istoLowerCase) {
    if(!strings || !replaces) return strings;
    var toLowerCaseCategoryNames = istoLowerCase === true ? strings.toLowerCase() : strings,//转小写之后的数据字段
        toLowerCaseVal = istoLowerCase === true ? replaces.toLowerCase() : replaces,//转小写之后的查询字段
        newStrArr = toLowerCaseCategoryNames.split(toLowerCaseVal), //根据查询字段把转了小写之后的数据字段进行分割
        joinStr = '',//用来拼接转了小写之后的数据字段,主要是为了截取原数据字段中的内容
        dataStr = '',//用来接收截取出来的原数据字段内容
        endStr = '',//用来接收拼接完之后的原数据字段
        length = newStrArr.length;
    for(var i = 0; i < length; i++){
        dataStr = strings.substring(joinStr.length, joinStr.length + newStrArr[i].length);//这里每次循环获取到的内容就是没有转小写的原数据字段
        joinStr += newStrArr[i]; //这里把当前循环数组下标中转了小写的内容拼接起来
        if(i === (length-1)){
            endStr += dataStr;
        }else{
            endStr += dataStr + (replaceResult !== null && replaceResult !== undefined ? replaceResult : ''); //把更换的内容拼接
        }
        joinStr += toLowerCaseVal; //把上面拼接的循环内容在加上要查询的内容,用来下次循环的时候截取下一段内容
    }
    return endStr;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值