JS mensimulasikan operasi pemformatan rentetan C#
/*** ** 功能: 字符串格式化替换操作 ***/ String.prototype.format = function () { var args = arguments; return this.replace(/\{(\d+)\}/g, function (m, i) { return args[i]; }); }
js melaksanakan format fungsi pemprosesan rentetan() serupa dengan c#:
Mereka yang biasa dengan C# harus tahu bahawa terdapat kaedah seperti format(). Mari kita tiru dan melaksanakan fungsi ini dalam JavaScript.
Contoh kod adalah seperti berikut:
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);
Kod di atas mencapai kesan yang kita inginkan Berikut ialah pengenalan kepada proses pelaksanaannya:
1. Prinsip pelaksanaan:
Prinsipnya agak mudah Mari kita panjangkan cerita untuk butiran, sila rujuk komen kod. Gunakan ungkapan biasa untuk mencari rentetan yang akan diganti, dan kemudian gantikan rentetan ini dengan kandungan yang ditentukan Dalam kod, beberapa kandungan yang ditentukan ialah literal rentetan dan beberapa nilai atribut objek.
2. Kod ulasan:
1.String.prototype.format=function(args){{}), tambahkan format kaedah contoh pada objek String melalui objek prototaip Kaedah ini digunakan untuk memproses rentetan.
2.if(arguments.length>0), jika bilangan parameter yang diluluskan adalah lebih besar daripada 0.
3.var result=this, tetapkan rujukan ini kepada hasil pembolehubah.
4.if(arguments.length==1&&typeof(args)=="objek"), digunakan untuk menentukan sama ada parameter yang diluluskan ialah literal objek.
5.for(var key in args), lalui atribut dalam literal objek.
6.var reg=new RegExp("({" key "})","g"), digunakan untuk memadankan rentetan yang ditentukan.
7.result=result.replace(reg,args[key]), gantikan rentetan yang sepadan dengan nilai atribut.
8.else{}, jika apa yang dilalui bukan literal objek.
9.for(var i=0;i
10.if(arguments==undefined), jika ia tidak ditentukan, kembalikan rentetan kosong.
11.var reg=new RegExp("({[" i "]})","g"), digunakan untuk memadankan rentetan yang ditentukan.
12.result=result.replace(reg,arguments), ganti.
13.kembali hasil, kembalikan rentetan yang diganti.
14.kembali ini, jika tiada parameter diluluskan, rentetan itu sendiri dikembalikan.