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 相关文章推荐
csdn 批量接受好友邀请
Feb 19 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
常用javascript表单验证汇总
Jul 20 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
使用JavaScript破解web
Sep 28 Javascript
vuex页面刷新后数据丢失的方法
Jan 17 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
Apr 09 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
Element Badge标记的使用方法
Jul 27 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
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
军训心得体会
2013/12/31 职场文书
供货协议书
2014/04/22 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
受伤赔偿协议书
2014/09/24 职场文书
北京爱情故事观后感
2015/06/12 职场文书
导游词之崇武古城
2019/10/07 职场文书
windows安装python超详细图文教程
2021/05/21 Python
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android