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 相关文章推荐
input 输入框内的输入事件详细分析
Mar 17 Javascript
写js时遇到的一些小问题
Dec 06 Javascript
JQuery学习笔记 nt-child的使用
Jan 17 Javascript
jQuery中:last-child选择器用法实例
Dec 31 Javascript
avalonjs制作响应式瀑布流特效
May 06 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
jQuery短信验证倒计时功能实现方法详解
May 25 Javascript
jQuery展示表格点击变色、全选、删除
Jan 05 Javascript
Vue入门之数据绑定(小结)
Jan 08 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
详解JS数组方法
Nov 20 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
咖啡与水的关系
2021/03/03 冲泡冲煮
laravel5.6中的外键约束示例
2019/10/23 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
PyTorch的torch.cat用法
2020/06/28 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
军训 自我鉴定
2014/02/03 职场文书
文秘大学生求职信
2014/02/25 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
六一节目主持词
2014/04/01 职场文书
学校党支部承诺书
2015/04/30 职场文书
结婚十年感言
2015/07/31 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Pandas加速代码之避免使用for循环
2021/05/30 Python