首页 > 蚂蚁部落 > 正文

JavaScript类似c#字符串处理方法format()
2017-12-27 09:19:51   来源:   评论:0 点击:

熟悉c 的应该知道有format()这么一个方法,下面就来模仿一下,JavaScript也实现此功能。代码实例如下:[JavaScript] 纯文本查看 复制代码&

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

代码实例如下:

[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 index=0;index<arguments.length;index++){         if(arguments[index]==undefined){           return "";         }         else{           var reg=new RegExp ("({["+index+"]})","g");           result = result.replace(reg, arguments[index]);         }       }     }     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 index=0;index<arguments.length;index++),遍历传递的参数。

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

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

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

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

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

三.相关阅读:

1.arguments可以参阅javascript arguments对象一章节。 

2.typeof可以参阅javascript typeof 运算符一章节。

相关热词搜索:

上一篇:CSS将背景图片集中在一张图片上
下一篇:jQuery paste事件用法

分享到: 收藏
评论排行