JS simule l'opération de formatage de chaîne C#
/*** ** 功能: 字符串格式化替换操作 ***/ String.prototype.format = function () { var args = arguments; return this.replace(/\{(\d+)\}/g, function (m, i) { return args[i]; }); }
js implémente la fonction de traitement de chaîne format() similaire à c# :
Ceux qui connaissent C# doivent savoir qu'il existe une méthode telle que format(). Imitons-la et implémentons cette fonction en JavaScript.
L'exemple de code est le suivant :
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);
Le code ci-dessus obtient l'effet souhaité. Voici une introduction à son processus de mise en œuvre :
1.Principe de mise en œuvre :
Le principe est relativement simple. Faisons court. Pour plus de détails, veuillez vous référer aux commentaires du code. Utilisez des expressions régulières pour rechercher les chaînes à remplacer, puis remplacez ces chaînes par le contenu spécifié. Dans le code, une partie du contenu spécifié est des chaînes littérales et d'autres sont des valeurs d'attribut d'objet.
2. Commentaires du code :
1.String.prototype.format=function(args){{}), ajoutez le format de la méthode d'instance à l'objet String via l'objet prototype. Cette méthode est utilisée pour traiter les chaînes.
2.if(arguments.length>0), si le nombre de paramètres passés est supérieur à 0.
3.var result=this, attribuez la référence de this à la variable result.
4.if(arguments.length==1&&typeof(args)=="object"), utilisé pour déterminer si le paramètre transmis est un littéral d'objet.
5.for(var key in args), parcourez les attributs dans le littéral de l'objet.
6.var reg=new RegExp("({" key "})","g"), utilisé pour correspondre à la chaîne spécifiée.
7.result=result.replace(reg,args[key]), remplacez la chaîne correspondante par la valeur de l'attribut.
8.else{}, si ce qui est passé n'est pas un objet littéral.
9.for(var i=0;i
10.if(arguments==undefined), s'il n'est pas défini, renvoie une chaîne vide.
11.var reg=new RegExp("({[" i "]})","g"), utilisé pour correspondre à la chaîne spécifiée.
12.result=result.replace(reg,arguments), remplacer.
13.return result, renvoie la chaîne remplacée.
14.renvoyez ceci, si aucun paramètre n'est passé, la chaîne elle-même est renvoyée.