JS simuliert den C#-String-Formatierungsvorgang
/*** ** 功能: 字符串格式化替换操作 ***/ String.prototype.format = function () { var args = arguments; return this.replace(/\{(\d+)\}/g, function (m, i) { return args[i]; }); }
js implementiert die String-Verarbeitungsfunktion format() ähnlich wie c#:
Wer mit C# vertraut ist, sollte wissen, dass es eine Methode wie format() gibt. Lassen Sie uns diese nachahmen und diese Funktion in JavaScript implementieren.
Das Codebeispiel lautet wie folgt:
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);
Der obige Code erzielt den gewünschten Effekt. Hier finden Sie eine Einführung in seinen Implementierungsprozess:
1. Umsetzungsprinzip:
Das Prinzip ist relativ einfach. Weitere Informationen finden Sie in den Codekommentaren. Verwenden Sie reguläre Ausdrücke, um die zu ersetzenden Zeichenfolgen zu finden, und ersetzen Sie diese Zeichenfolgen dann durch den angegebenen Inhalt. Im Code sind einige der angegebenen Inhalte Zeichenfolgenliterale und andere Objektattributwerte.
2. Codekommentare:
1.String.prototype.format=function(args){{}), fügen Sie das Instanzmethodenformat über das Prototypobjekt zum String-Objekt hinzu. Diese Methode wird zum Verarbeiten von Zeichenfolgen verwendet.
2.if(arguments.length>0), wenn die Anzahl der übergebenen Parameter größer als 0 ist.
3.var result=this, weisen Sie die Referenz davon der Variablen result zu.
4.if(arguments.length==1&&typeof(args)=="object"), wird verwendet, um zu bestimmen, ob der übergebene Parameter ein Objektliteral ist.
5.for(var key in args), Durchlaufen Sie die Attribute im Objektliteral.
6.var reg=new RegExp("({" key "})","g"), wird zum Abgleichen der angegebenen Zeichenfolge verwendet.
7.result=result.replace(reg,args[key]), ersetzen Sie die passende Zeichenfolge durch den Attributwert.
8.else{}, wenn das übergebene Objekt kein Objektliteral ist.
9.for(var i=0;i
10.if(arguments==undefiniert), wenn es undefiniert ist, wird eine leere Zeichenfolge zurückgegeben.
11.var reg=new RegExp("({[" i "]})","g"), wird zum Abgleichen der angegebenen Zeichenfolge verwendet.
12.result=result.replace(reg,arguments), ersetzen.
13.Ergebnis zurückgeben, die ersetzte Zeichenfolge zurückgeben.
14.Gib dies zurück. Wenn keine Parameter übergeben werden, wird die Zeichenfolge selbst zurückgegeben.