js如何替换字符模板中的变量

news/2025/4/1 18:56:01/文章来源:https://www.cnblogs.com/ctxb/p/18800710

结论: 在 JavaScript 中,可以通过字符串模板、正则表达式或手动替换等方式,将字符模板中的变量替换成实际值。


详细展开

1. 使用模板字符串(推荐)

ES6 引入了模板字符串功能,可以直接在字符串中嵌入变量,这是最简洁和现代的方式。

语法:

let name = "Alice";
let age = 25;let template = `你好, ${name}! 你今年 ${age} 岁了。`;
console.log(template);
// 输出: 你好, Alice! 你今年 25 岁了。

 

特点:

  • 使用反引号(`)定义模板字符串。
  • 使用 ${} 插入变量或表达式。

2. 使用正则表达式替换占位符

如果需要处理旧版浏览器不支持的模板字符串,或者需要更灵活的占位符替换逻辑,可以使用正则表达式。

示例:

let template = "你好, {{name}}! 你今年 {{age}} 岁了。";let data = {name: "Alice",age: 25
};let result = template.replace(/{{\s*([^}]+)\s*}}/g, (match, key) => {return data[key] !== undefined ? data[key] : match; // 如果键不存在,保留原占位符
});console.log(result);
// 输出: 你好, Alice! 你今年 25 岁了。

 

解释:

  • 正则表达式 /{{\s*([^}]+)\s*}}/g 匹配类似 {{key}} 的占位符。
  • replace 方法的回调函数根据占位符的键名从 data 对象中获取对应的值。

3. 手动替换占位符

对于简单的场景,可以直接通过多次调用 replace 方法来替换占位符。

示例:

let template = "你好, {name}! 你今年 {age} 岁了。";let data = {name: "Alice",age: 25
};for (let key in data) {template = template.replace(new RegExp(`{${key}}`, 'g'), data[key]);
}console.log(template);
// 输出: 你好, Alice! 你今年 25 岁了。

 

解释:

  • 使用 new RegExp 动态生成正则表达式。
  • 遍历 data 对象,逐一替换模板中的占位符。

4. 使用第三方库(如 Lodash)

如果你的项目中已经引入了第三方库(如 Lodash),可以利用其提供的工具函数简化操作。

示例:

const _ = require("lodash");let template = "你好, <%= name %>! 你今年 <%= age %> 岁了。";let data = {name: "Alice",age: 25
};let result = _.template(template)(data);console.log(result);
// 输出: 你好, Alice! 你今年 25 岁了。

 

解释:

  • Lodash 的 _.template 方法支持模板引擎风格的占位符(如 <%= key %>)。
  • 它会自动解析并替换占位符为实际值。

总结

  • 模板字符串 是现代 JavaScript 的最佳实践,简单易用。
  • 正则表达式 提供了更大的灵活性,适合复杂场景。
  • 手动替换 适用于简单的占位符替换需求。
  • 第三方库 如 Lodash 提供了更强大的模板解析能力,适合需要扩展功能的场景。

根据具体需求选择合适的方法即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908155.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git命令】操作过程 : gif动图演示

免责声明: 本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗? 今天就来聊聊 Git 命令。尽管 Git 是一款非常强大的工…

第10章面向对象编程(高级部分)-cnblog

类变量与类方法 static修饰的成员变量(类变量,静态变量)的特性? 同一个类所有对象共享 类变量是随着类的加载而创建, 所以即使没有创建对象实例也可以访问 ,但是类变量的访问, 必须遵守 相关的访问权限. static可以修饰类或者函数吗? 可以,使用static修饰的方法称为类…

网站被劫持且快照被黑,如何快速修复与解决?

一、问题现象与原因分析现象描述从百度点击进入网站时,跳转到非法页面。 直接输入网址访问则正常,未发生跳转。 百度快照显示非法内容,site查看网站收录出现大量非法关键词。 百度网址安全中心提示“该页面可能存在钓鱼欺诈信息”。原因分析首页代码被篡改:黑客在首页文件中…

halcon 深度学习教程(三) 目标检测之水果分类

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18777081深度学习教程目录如下,还在继续更新完善中 深度学习系列教程目录有兴趣可以多看其他的halcon教程halcon 学习教程目录本篇主要讲一下halcon的目标检测案例,都是halcon22版本以后才可以用的哈,没有的话…

相或为K

贪心思想:通过排除非法数,确保或运算不会引入多余的1位。 代码展示: #include <bits/stdc++.h> using namespace std; //对于k来说 如果k的第i位为0,则ai的第i为也为0(贪心思想 最优解) //利用二进制进行拆位,用>>和&的方式进行 int t,n,k;bool check(int…

WebKit Inside: 渲染树

iOS WebKit 渲染树的构建过程经过CSS的匹配,就要进入渲染树的构建。 渲染树也叫RenderObject树,因为渲染树上每一个节点,都是RenderObject的子类。 首先来看一下RenderObject的继承类图。 1 RenderObject 继承类图RenderText表示要渲染的文本。 RenderButton表示要渲染的按钮…

使用Chat2DB操作WINCC的Microsoft SQL Server数据库

配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问2025年3月30日 11:59 周日 记录 WINCC软件安装时,会同时安装对应版本的Microsoft SQL Server 数据库。 该记录主要是配置WINCC软件自动安装的Microsoft SQL Server 数据库,使之可以被外部程序访问…

GO单元测试-工具

本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify和mockery工具,monkey patching框架gomonkey,以及如何查看覆盖率。GO单元测试 摘要 本文介绍如何在GO语言中编写单元测试,主要内容包括:标准库中的testing包,第三方框架testify…

36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了!

`Flowise` 是一款革命性的低代码LLM应用构建工具,开发者通过可视化拖拽界面,就能快速搭建基于大语言模型的智能工作流。该项目在GitHub上线不到1年就斩获**36.7K星标**,被开发者誉为"AI时代的乐高积木"。36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了! 只…

Tandis 解法集()

1-x 的关卡都比较简单。 2-1: 现在我们有一个常驻的旋转操作。 和某个 1-x 的关卡一样处理即可。 2-2: 开始起飞了。 操作类似于一个极坐标变换:把方块平放即可得到圆。 2-3如果要通过这种变换得到一个中心对称图形,那左侧放的一定也是长度恰好为 8 的倒下的柱体。 而柱体的切…

Java24发布,精心总结

Java 24作为2025年3月发布的最新版本,延续了Java平台每半年发布一次的节奏,带来了24项重要改进。本文将按照核心改进领域分类,详细解析每个特性的技术原理和实际价值,帮助开发者全面了解这一版本的能力边界和应用场景。 不过Java24是自Java 21 以来的第三个非长期支持版本,…

一台电脑上快速切换git账号

如果你的一台笔记本,既要开发公司的项目,同时你又要参与github,或者是gitee上的开源项目。你就需要使用不同的账号来提交代码。如何快速、高效的切换和管理不同的git账号? 本人使用的就是这种方式,只要配置好,会自动切换的。本文来自博客园,作者:Eular,转载请注明原文…