JavaScript实现格式化字符串函数String.format

发布时间 - 2026-01-10 21:53:27    点击率:

在js开发中,我们可能会遇到这样一个问题

当需要通过js动态插入html标签的时候

特别是当遇到大量的变量拼接、引号层层嵌套的情况,会出现转义字符问题,经常出错

我们来看个例子

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script>
 window.onload = function () {
 var id = '1';
 var code = 'zhangsan';
 var name = '张三';
 document.getElementById('test').innerHTML = '<a href="#" onclick="buttonClick(\"' + id + '\",\"' + code + '\">' + name + '</a>';
 }
 function buttonClick(id, code) {
 alert(id + '-' + code);
 }
 </script>
</head>
<body>
 <div id="test"></div>
</body>
</html>

运行直接报错

接下来把转义字符\"改成\'试下

运行之后,发现仍然无法正常显示

这样的代码不光看起来杂乱无章、难以维护,关键是很容易出错

接下来我们开始封装格式化字符串方法

String.js

(function () {
 /// <summary>
 /// 引号转义符号
 /// </summary>
 String.EscapeChar = '\'';
 /// <summary>
 /// 替换所有字符串
 /// </summary>
 /// <param name="searchValue">检索值</param> 
 /// <param name="replaceValue">替换值</param> 
 String.prototype.replaceAll = function (searchValue, replaceValue) {
 var regExp = new RegExp(searchValue, "g");
 return this.replace(regExp, replaceValue);
 }
 /// <summary>
 /// 格式化字符串
 /// </summary>
 String.prototype.format = function () {
 var regexp = /\{(\d+)\}/g;
 var args = arguments;
 var result = this.replace(regexp, function (m, i, o, n) {
 return args[i];
 });
 return result.replaceAll('%', String.EscapeChar);
 }
})();

通过占位符传递变量值,用%替代了引号转义符,代码简洁了很多,也非常方便维护,出错的机率也小了很多

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script src="String.js"></script>
 <script>
 window.onload = function () {
 var id = '1';
 var code = 'zhangsan';
 var name = '张三';
 document.getElementById('test').innerHTML = '<a href="#" onclick="buttonClick(%{0}%,%{1}%)">{2}</a>'.format(id, code, name);
 }

 function buttonClick(id, code) {
 alert(id + '-' + code);
 }
 </script>
</head>
<body>
 <div id="test"></div>
</body>
</html>

看下测试效果

测试结果正确,并且点击事件中也正确接收到了参数值

案例下载地址:http://xiazai./201612/yuanma/StringFormat_jb51.rar

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# javascript  # string.format  # Java字符串格式化功能 String.format用法详解  # Java String.format()的用法  # Java之String.format()方法案例讲解  # 快速入门介绍Java中强大的String.format()  # Java中String.format的使用方法总结  # JAVA字符串格式化-String.format()的使用  # String.Format大全(C# Java)  # C#中string.format用法详解  # javascript模拟实现C# String.format函数功能代码  # js中的string.format函数代码  # javascript下string.format函数补充  # javascript下利用arguments实现string.format函数  # asp.net String.format中大括号的加入方法  # 为javascript添加String.Format方法  # 下载地址  # 很容易  # 杂乱无章  # 一个问题  # 中也  # 报错  # 看个  # 正常显示  # 变量值  # title  # script  # content  # text  # charset  # utf  # zhangsan  # code  # document  # 张三  # id 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现用户注册和登录?(Auth脚手架指南)  如何在宝塔面板中创建新站点?  Laravel如何使用Service Container和依赖注入?(代码示例)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  ,怎么在广州志愿者网站注册?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  javascript中闭包概念与用法深入理解  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在建站主机中优化服务器配置?  免费视频制作网站,更新又快又好的免费电影网站?  装修招标网站设计制作流程,装修招标流程?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  EditPlus 正则表达式 实战(3)  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  如何有效防御Web建站篡改攻击?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何实现用户密码重置功能?(完整流程代码)  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何在腾讯云服务器上快速搭建个人网站?  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  EditPlus中的正则表达式实战(5)  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何实现javascript表单验证_正则表达式有哪些实用技巧  如何用狗爹虚拟主机快速搭建网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  网站页面设计需要考虑到这些问题  网站制作企业,网站的banner和导航栏是指什么?  如何在搬瓦工VPS快速搭建网站?  如何解决hover在ie6中的兼容性问题  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  专业商城网站制作公司有哪些,pi商城官网是哪个?  原生JS获取元素集合的子元素宽度实例  如何正确选择百度移动适配建站域名?  如何用PHP快速搭建CMS系统?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何在自有机房高效搭建专业网站?  Laravel如何实现多对多模型关联?(Eloquent教程)  如何快速配置高效服务器建站软件?  如何在企业微信快速生成手机电脑官网?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel集合Collection怎么用_Laravel集合常用函数详解  怎么用AI帮你设计一套个性化的手机App图标?  jQuery中的100个技巧汇总  如何快速查询域名建站关键信息?