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,如果没有传递参数,则返回字符串本身。

标签:
js格式化字符串,js字符串操作,js对字符串的操作

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
狼山资源网 Copyright www.pvsay.com

评论“javascript模拟C#格式化字符串”

暂无“javascript模拟C#格式化字符串”评论...

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。