Skip to content

每日一题:实现模板字符串解析

作者:江月迟迟
发表于:2024-12-10
字数统计:367 字
预计阅读2分钟

挑战介绍

本节我们来挑战一道大厂面试真题 —— 实现模板字符串解析。

挑战准备

新建一个 strRender.js 文件,在文件里写一个名为 strRender 的函数,并导出这个函数,如下图所示:

图片描述

这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:

js
function strRender(str, data) {
  // 补充代码
}

module.exports = strRender;

挑战内容

请封装一个 strRender 函数,用来实现模板字符串解析功能。

strRender 函数接收两个参数,第一个参数是模板字符串 str,第二个参数是需要传入的 data,最终返回一个把模板中的变量替换了的新字符串。

示例:

js
const str = "My name is ${name}, I am ${age} years old, I come from ${country}";

const data = {
  name: "zhangsan",
  age: "18",
  country: "China",
};

console.log(strRender(str, data)); // 'My name is zhangsan, I am 18 years old, I come from China'

注意事项

  • 文件名、函数名不可随意更改。
  • 文件中编写的函数需要导出,否则将无法提交通过。

题解

js
function strRender(str, data) {
  const regexp1 = /(?<={)(.*?)(?=})/gm
  const regexp2 = /\${(.*?)}/m
  let match2 = str.match(regexp1)
  for(let i = 0; i < match2.length; i++) {
    str = str.replace(regexp2,data[match2[i]])
  }
  return str
}