javascript類比C#格式化字串_javascript技巧

來源:互聯網
上載者:User

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); 

以上代碼是實現了我們想要的效果,下面介紹一下它的實現過程:

一.實現原理:

原理比較簡單,這裡長話短說,具體可以參閱代碼注釋。使用Regex找出要被替換的字串,然後使用指定的內容替換這些字串即可,在代碼中,指定的內容有的是字串直接量,有的則是對象的屬性值。

二.代碼注釋:

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,就返回Null 字元串。

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

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.