js模拟C #字符串格式化操作


/
**函数:字符串格式化替换操作
***
(string.prototype.format =功能){
var args =参数;
返回this.replace( / {( D +) } /克,
函数(m,i){
返回参数{我};
});
}


js实现一个字符串处理函数的形式()C #:

熟悉C #应该知道有一种方法的格式(),和下面的会被模仿,这个功能也用Javascript实现。

代码示例如下所示:


字符串。原型。格式=功能(args){
如果(参数,长度> 0){
var结果;
如果(参数。长度= = 1typeof(args)=对象){
对于(在参数VAR键){
VaR reg = new RegExp(({+键+})
结果:result.replace(REG,args {key});
}
}
别的{
对于(var i = 0;i < arguments.length;i++){
如果(参数{ =未定义的){
返回;
}
别的{
VaR reg = new RegExp(({ {+我+} })
结果:result.replace(REG,论点{我});
}
}
}
返回结果;
}
别的{
返回此;
}
}
无功fiststr ={ 0 }欢迎您的光临,希望每个人都能得到你想要的{ 1 }。
无功secondstr ={ webname }欢迎您的光临,希望每个人都能得到你想要的{爱}。
无功出= fiststr.format(
无功secondout = secondstr.format({ webname:
console.log(出);
console.log(secondout);


以上代码是为了达到我们想要的效果,下面是实现过程:

1。实现原则:

这个原理比较简单,可以参考这里的代码,长话短说,具体注释。使用正则表达式找出要替换的字符串,然后用指定的内容替换这些字符串。在代码中,指定的内容直接由字符串来度量,而另一些则是对象的属性值。

两。代码注释:

1。字符串。原型。格式=功能(args){ { }),通过添加原型对象的实例方法格式的字符串对象,这个方法用来处理字符串。



2.if(参数。长> 0),如果传递的参数个数大于0。



3.var结果=本,将这个变量结果的参考。



4.if(参数。长度= = 1typeof(args)= =对象),以确定是否传递参数是直接宾语。



5.for(args中无功的关键),遍历属性在对象直接量。



6.var reg = new RegExp({+键+}),G),用于匹配指定的字符串。



7。结果= result.replace(REG,args {key}),与属性值替换字符串匹配。



8,如果转移不是对象的直接量,则{ }。



9.for(var i = 0;i < arguments.length;i++),遍历传递参数。



10.if(参数= =不确定),如果是未定义,返回一个空字符串。



11.var reg = new RegExp(({ {+我+} })



12。结果= result.replace(注册、参数),取代。



13.return结果,返回的字符串替换。



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