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 相关文章推荐
javascript 面向对象全新理练之原型继承
Dec 03 Javascript
JavaScript中的集合及效率
Jan 08 Javascript
jquery 插件学习(一)
Aug 06 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
Apr 28 Javascript
centos 上快速搭建ghost博客方法分享
May 23 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
JS setTimeout与setInterval的区别
Apr 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
一个颜色轮换的简单例子
2006/10/09 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python Django 创建应用过程图示详解
2019/07/29 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
python基于openpyxl生成excel文件
2020/12/23 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
自荐书模板
2013/12/19 职场文书
户籍证明的格式
2014/01/13 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
精神病医院见习报告
2014/11/03 职场文书
2014年采购工作总结
2014/11/20 职场文书
导师工作推荐信
2015/03/27 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书