用Mustache模板来进行字符串处理(截取替换)

这两天在做一个有用到字符串截取替换的需求,这个字符串有的地方是一个固定格式的表达式,比如:

随便%name.001%输入%001.select.下拉框%%name.010%%010.table.表格%什么%name.100%文字%100.form.表单%看看

比如我一条数据,有id,name,type,description等这些属性。
这里的%和%之间就相当于一个占位符,第一个%到第二个%之间用的是name.id这种格式,后面要将这个替换成数据的名称name;
第三个%到第四个%用的是id.type.description是这种格式,后面要替换成数据的具体信息。
一条数据有四个%,多条数据则每四个%循环一次。

大概就是上面这种形式吧,我一开始就是用%来处理这些字符串的,获取每一个%的位置,用indexOfsubstring方法来进行处理。

因为数据结构太复杂,循环又多,又有多种不同的情况要区分,代码就变的很冗长,循环嵌套太多,当时做的时候,脑袋都绕晕了。每次做着做着哪里出错了,分析是哪里的问题就得重新梳理一遍代码,那一大段一大段的代码看得我头都晕了。这个任务的其他部分都很快都做好了,就差这个字符串的结果了,当时真的是焦头烂额。后面别人告诉我试试用Mustache模板来做。

Mustache模板用过,但是没有想过这个可以用来处理字符串。

大概就是把字符串当成一个模板,然后获取到那些占位符要替换的数据,直接替换就可,也不用获取占位符的位置,不用截取占位符。
比如我把上面的那一段字符串的%换成大括号{{}}

var string = "随便输入{{name.001}}点什么数据{{001.select.下拉框}}来进行{{name.010}}一个Mustache模板{{010.table.表格}}的测试{{name.100}}{{100.form.表单}}看看结果";
//这里是测试用的数组
var arr = [
			{id:"001",name:"选择下拉框",type:"select",description:"下拉框"},
			{id:"010",name:"填写表格",type:"table",description:"表格"},
			{id:"100",name:"提交表单",type:"form",description:"表单"}
		];
for(var i = 0; i < arr.length; i++){
	var name = "name."+arr[i].id;
	var info = arr[i].id+"."+arr[i].type+"."+arr[i].description;
	var layerInfo = {"name" : name , "info" : info};
	string = string.replace("{{"+Mustache.render("{{name}}", layerInfo)+"}}", arr[i].name);
	string = string.replace("{{"+Mustache.render("{{info}}", layerInfo)+"}}", arr[i].description);
}
console.log(string);
//输出结果:
//随便输入选择下拉框点什么数据下拉框来进行填写表格一个Mustache模板表格的测试提交表单表单看看结果

用Mustache的话就可以省略获取每个%的位置的代码,还可以省略用到indexOfsubstring的代码。

改完之后,代码的可读性简洁性完全就不是一个级别的,也不用区分什么什么情况了,Mustache模板已经帮你处理好了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

符华-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值