首頁  >  文章  >  web前端  >  javascript模擬C#格式化字串_javascript技巧

javascript模擬C#格式化字串_javascript技巧

WBOY
WBOY原創
2016-05-16 15:42:17991瀏覽

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

10.if(arguments==undefined),如果為undefined,就回傳空字串。

11.var reg=new RegExp("({[" i "]})","g"),用來符合指定的字串。

12.result=result.replace(reg,arguments),進行替換。

13.return result,傳回替換後的字串。

14.return this,如果沒有傳遞參數,則傳回字串本身。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn