javascript模拟C#格式化字符串


Posted in Javascript onAugust 26, 2015

JS 模拟C# 字符串格式化操作

/***
** 功能: 字符串格式化替换操作
***/
String.prototype.format = function () {
 var args = arguments;
 return this.replace(/\{(\d+)\}/g,
 function (m, i) {
  return args[i];
 });
}

js实现类似c#中的字符串处理函数format():

熟悉c#的应该知道有format()这么一个方法,下面就来模仿一下,在javascript中也实现此功能。

代码实例如下:

String.prototype.format=function(args){ 
 if(arguments.length>0){ 
 var result=this; 
 if(arguments.length==1&&typeof(args)=="object"){ 
  for(var key in args){ 
  var reg=new RegExp("({"+key+"})","g"); 
  result=result.replace(reg, args[key]); 
  } 
 } 
 else{ 
  for(var i=0;i<arguments.length;i++){ 
  if(arguments[i]==undefined){ 
   return ""; 
  } 
  else{ 
   var reg=new RegExp ("({["+i+"]})","g"); 
   result = result.replace(reg, arguments[i]); 
  } 
  } 
 } 
 return result; 
 } 
 else{ 
 return this; 
 } 
}
var fistStr="{0}欢迎您,希望大家能够得到想要的{1}";
var secondStr="{webName}欢迎您,希望大家能够得到想要的{favoriate}";
var firstOut=fistStr.format("","东西");
var secondOut=secondStr.format({webName:"",favoriate:"东西"});
console.log(firstOut);
console.log(secondOut);

以上代码是实现了我们想要的效果,下面介绍一下它的实现过程:

一.实现原理:

原理比较简单,这里长话短说,具体可以参阅代码注释。使用正则表达式找出要被替换的字符串,然后使用指定的内容替换这些字符串即可,在代码中,指定的内容有的是字符串直接量,有的则是对象的属性值。

二.代码注释:

1.String.prototype.format=function(args){{}),通过原型对象为String对象添加实例方法format,此方法就是用来处理字符串。

2.if(arguments.length>0),如果传递参数的个数大于0。

3.var result=this,将this的引用赋值给变量result。

4.if(arguments.length==1&&typeof(args)=="object"),用来判断传递的参数是否是一个对象直接量。

5.for(var key in args),遍历对象直接量中的属性。

6.var reg=new RegExp("({"+key+"})","g"),用来匹配指定的字符串。

7.result=result.replace(reg,args[key]),用属性值替换匹配的字符串。

8.else{},如果传递的不是一个对象直接量。

9.for(var i=0;i<arguments.length;i++),遍历传递的参数。

10.if(arguments==undefined),如果为undefined,就返回空字符串。

11.var reg=new RegExp("({["+i+"]})","g"),用来匹配指定的字符串。

12.result=result.replace(reg,arguments),进行替换。

13.return result,返回替换后的字符串。

14.return this,如果没有传递参数,则返回字符串本身。

Javascript 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
如何快速的呈现我们的网页的技巧整理
Jul 01 Javascript
javascript qq右下角滑出窗口 sheyMsg
Mar 21 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
Jan 23 Javascript
JS常用表单验证方法总结
May 22 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 Javascript
antd配置config-overrides.js文件的操作
Oct 31 Javascript
jQuery实现滚动切换的tab选项卡效果代码
Aug 26 #Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 #Javascript
jQuery带时间的日期控件代码分享
Aug 26 #Javascript
js仿苹果iwatch外观的计时器代码分享
Aug 26 #Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 #Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 #Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 #Javascript
You might like
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python的range和linspace使用详解
2019/11/27 Python
Python日志syslog使用原理详解
2020/02/18 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
教师自我鉴定
2013/12/13 职场文书
投标单位介绍信
2014/01/09 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
中国世界遗产导游词
2015/02/13 职场文书
总经理检讨书范文
2015/02/16 职场文书
地道战观后感400字
2015/06/04 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书