Cet article présente principalement un résumé des problèmes rencontrés lors de l'utilisation de la méthode Replace() dans JS. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.
Aujourd'hui, j'ai rencontré plusieurs problèmes lors de l'écriture du script de packaging automatisé pour le client PC. Bien qu'il s'agisse de problèmes mineurs, ils sont restés bloqués pendant un moment, j'ai donc décidé de les enregistrer.
La méthode replace() de js est utilisée pour remplacer certains contenus. Elle peut recevoir deux paramètres Le premier est un objet d'expression régulière à remplacer ou une chaîne, et le second peut être le to-. objet d'expression régulière à remplacer. Le contenu ou la fonction à remplacer doit être une chaîne. L'erreur que j'ai rencontrée lors de l'exécution était la suivante : Impossible de lire la propriété "remplacer" d'undéfini. Le code spécifique est le suivant :
var fs=require("fs") var infoPlistFile = osxFolder + '/Contents/Info.plist'; var infoPlist = fs.readFile(infoPlistFile); fs.writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));
Lors de l'exécution de ce code, l'erreur signalée est que le remplacement de l'attribut non défini ne peut pas être obtenu. Au début, je ne savais pas où était le problème, puis je l'ai fait. J'ai essayé d'imprimer le fichier remplacé infoPlist. , j'ai trouvé qu'il était nul, puis j'ai su qu'il y avait un problème dans la définition de infoPlist. Après l'avoir remplacé par fs.readFileSync, j'ai trouvé qu'il n'y avait pas une telle erreur, mais il y avait une erreur. nouvelle erreur : remplacer n'est pas une fonction
J'ai recherché des informations pertinentes et j'ai trouvé que la variable correspondante n'était pas une chaîne, mais un autre type, j'ai donc imprimé le type d'infoPlist, et ce qui a été imprimé était objet, donc le problème réside ici, car le type d'infoPlist est faux, donc cela a causé L'erreur a été signalée, j'ai donc ajouté l'opération de traitement en chaîne, donc cela a fonctionné
var infoPlistFile = osxFolder + '/Contents/Info.plist'; var infoPlist = readFile(infoPlistFile).toString(); writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));
De plus , quand j'ai écrit moi-même la démo pour tester, j'ai également découvert que s'il n'y a pas de variable à recevoir, replace() La méthode ne fonctionne pas, comme :
var str="Hello World"; str.replace(/World/g, "dxy"); console.log(str);
La str imprimée à ce moment est toujours "Hello World" et n'a pas été remplacé. Une variable doit être utilisée comme récepteur ici pour remplacer la variable d'origine, telle que :
var str="Hello World"; var a=str.replace(/World/g, "dxy"); console.log(a);
Le résultat imprimé à ce moment est "Hello dxy" .
Résumé : Cette fois, lors de l'utilisation de la méthode replace(), j'ai remarqué les problèmes suivants :
1 Lorsque vous utilisez la méthode replace(), assurez-vous d'abord qu'elle ne peut pas être nulle ou appelée. sur une variable de type indéfini. Nous pouvons y ajouter un jugement et appeler la méthode uniquement si la variable a une valeur.
2. Lors de l'exécution de la méthode replace(), la variable doit non seulement avoir une valeur, mais doit également être de type chaîne.
3. JS n'attribue pas automatiquement de valeurs. Pour exécuter une méthode, vous devez soit l'exécuter directement dans la méthode, soit renvoyer le résultat. Lorsque vous renvoyez le résultat, vous devez le recevoir via une variable.
4. Si le premier paramètre est une expression régulière, les guillemets ne peuvent pas être ajoutés.
Recommandations associées :
Exemples d'utilisation de la méthode replace() en Javascript
Obsolète dans ECSHOP : erreur preg_replace() Solution
Introduction à l'utilisation de la fonction str_replace() de remplacement de chaîne php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!