美文网首页
笔试实现一个字符串模板函数

笔试实现一个字符串模板函数

作者: 清晓凝露 | 来源:发表于2020-08-18 15:16 被阅读0次

    实现一个字符串模板函数

    const a = {
      b: 'xxx',
      c: ['a', 'b'],
      d: {
       a: 'a'
      }
    }
    
    const string = 'aaa${a.b}bbb${a.c[0]}ccc${a.d.a}'
    transform(string, a) => 'aaaxxxbbbaccca'
    

    解题思路

    通过正则表达式将插值部分匹配出来替换成对象属性值

    const a = {
      b: 'xxx',
      c: ['a', 'b'],
      d: {
        a: 'a'
      }
    }
    const transform = (str) => {
      let newStr = str.replace(/\$\{.*?\}/g, (res) => {//正则表达式匹配${xxxx}
        let newValue = ""
        try {
          newValue = eval(res.slice(2, -1));//截取插值部分
        }
        catch (exception) {//如果取值报错将匹配的字符串部分原样返回
          newValue = res;
        }
        return newValue;
      })
      return newStr;
    }
    const str = 'aaa${a.b}bbb${a.c[0]}ccc${a.d.a}';
    console.log(transform(str));//aaaxxxbbbaccca
    

    相关文章

      网友评论

          本文标题:笔试实现一个字符串模板函数

          本文链接:https://www.haomeiwen.com/subject/ctvqjktx.html