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

 更新时间:2016年12月16日 15:48:53   作者:天碼行空  
本文主要介绍了JavaScript实现格式化字符串函数String.format(可自动解析引号转义字符)。具有很好的参考价值,需要的朋友一起来看下吧

在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.jb51.net/201612/yuanma/StringFormat_jb51.rar

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

相关文章

  • 全面解析JavaScript Module模式

    全面解析JavaScript Module模式

    这篇文章主要介绍了JavaScript Module模式的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 微信公众号生成新浪短网址的实现(快速生成)

    微信公众号生成新浪短网址的实现(快速生成)

    这篇文章主要介绍了微信公众号生成新浪短网址的实现(快速生成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 关于JS中二维数组的声明方法

    关于JS中二维数组的声明方法

    下面小编就为大家带来一篇关于JS中二维数组的声明方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 200行代码实现blockchain 区块链实例详解

    200行代码实现blockchain 区块链实例详解

    这篇文章主要介绍了200行代码实现blockchain 区块链的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-03
  • ES6箭头函数和扩展实例分析

    ES6箭头函数和扩展实例分析

    这篇文章主要介绍了ES6箭头函数和扩展,结合实例形式分析了ES6箭头函数和扩展基本功能、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • javascript实现简单的鼠标拖动效果实例

    javascript实现简单的鼠标拖动效果实例

    这篇文章主要介绍了javascript实现简单的鼠标拖动效果,实例分析了javascript鼠标拖动效果的相关要点与实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox

    div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox

    marquee无缝滚动想必大家都有见过,本文利用div+css+javascript也实现下类似的滚动且兼容firefox,喜欢的朋友可以参考下
    2013-08-08
  • JavaScript获取当前cpu使用率的方法

    JavaScript获取当前cpu使用率的方法

    这篇文章主要介绍了JavaScript获取当前cpu使用率的方法,涉及JavaScript针对系统硬件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • JavaScript常见的跨标签页通信方式总结

    JavaScript常见的跨标签页通信方式总结

    跨标签页通信是指在浏览器中的不同标签页之间进行数据传递和通信的过程,这篇文章为大家整理了前端常见的跨标签页通信方式,有需要的小伙伴可以了解下
    2023-10-10
  • JavaScript中的函数申明、函数表达式、箭头函数

    JavaScript中的函数申明、函数表达式、箭头函数

    js中的函数可以通过几种方式创建,具体创建方法通过实例代码给大家介绍的非常详细,文中通过例子给大家介绍了函数声明和表达式之间的差别,感兴趣的朋友跟随小编一起看看吧
    2019-12-12

最新评论