每日一题-编程题

实现一个render(template,context)方法,降template中的占位符用context填充。

示例:

var template = '{{name}}很厉害,才{{age}}岁';
var context = {name:'bottle',age:'15'};

// 输入:template context 
// 输出:bottle很厉害 才15岁

要求:级联的变量也可以展开分隔符与变量之间允许有空白字符。

解答:使用正则 + trim

  • 利用非贪婪匹配 /\{\{(.*?)\}\}/g 匹配到到所有的 {{name}}{{age}}
  • 利用 str.replace(regexp|substr, newSubStr|function) ,其中第二个参数可以是 fucntion (replacement) ,该函数的返回值将替换掉第一个参数匹配到的结果,将所有匹配到的字符替换成指定的字符
  • 最后,String.prototype.trim() 去除分隔符与变量之间空白字符
var template = "{{name}}很厉害,才{{age}}岁"
var context = {name:"bottle",age:"15"}
function render(template, context) {
  return template.replace(/{{(.*?)}}/g, (match, key) => context[key.trim()])
}
render(template, context)
// "bottle很厉害,才15岁"

顺便附带JS正则表达式总结

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值