Dieser Artikel stellt hauptsächlich eine Zusammenfassung der Probleme vor, die bei der Verwendung der Methode „Replace()“ in JS auftreten. Freunde in Not können sich darauf beziehen.
Heute bin ich beim Schreiben des automatisierten Paketierungsskripts für den PC-Client auf mehrere Probleme gestoßen. Obwohl es sich um kleinere Probleme handelte, blieben sie eine Weile hängen, also habe ich beschlossen, sie aufzuzeichnen.
Die Methode replace() von js wird zum Ersetzen bestimmter Inhalte verwendet. Sie kann zwei Parameter empfangen. Der erste ist ein zu ersetzendes reguläres Ausdrucksobjekt oder eine Zeichenfolge, und der zweite kann der zu ersetzende sein. Ersetztes reguläres Ausdrucksobjekt. Der zu ersetzende Inhalt oder die zu ersetzende Funktion muss eine Zeichenfolge sein. Der Fehler, auf den ich während der Ausführung gestoßen bin, war: Die Eigenschaft „replace“ von undefiniert kann nicht gelesen werden. Der spezifische Code lautet wie folgt:
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));
Beim Ausführen dieses Codes wurde der Fehler gemeldet, dass das Ersetzen des undefinierten Attributs nicht abgerufen werden konnte, und dann wusste ich nicht, wo das Problem lag Ich habe versucht, die ersetzte Datei infoPlist auszudrucken, habe festgestellt, dass sie null ist, und dann wusste ich, dass es ein Problem beim Definieren von infoPlist gab. Nachdem ich sie in fs.readFileSync geändert hatte, stellte ich fest, dass es keinen solchen Fehler gab, aber es gab einen neuer Fehler: Ersetzen ist keine Funktion
Ich habe nach relevanten Informationen gesucht und festgestellt, dass die entsprechende Variable keine Zeichenfolge, sondern ein anderer Typ war. Daher habe ich den Typ von infoPlist gedruckt, und was gedruckt wurde, war Objekt, also liegt das Problem hier, weil der Typ von infoPlist falsch ist, also hat es verursacht Der Fehler wurde gemeldet, also habe ich den Vorgang der Verarbeitung in eine Zeichenfolge hinzugefügt, also hat es funktioniert
var infoPlistFile = osxFolder + '/Contents/Info.plist'; var infoPlist = readFile(infoPlistFile).toString(); writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));
Zusätzlich Als ich die Demo selbst zum Testen schrieb, stellte ich auch fest, dass, wenn keine Variable zum Empfangen vorhanden ist, replace() Die Methode funktioniert nicht, wie zum Beispiel:
var str="Hello World"; str.replace(/World/g, "dxy"); console.log(str);
Die zu diesem Zeitpunkt ausgedruckte str ist immer noch „Hallo Welt“ und wurde hier nicht ersetzt, um die ursprüngliche Variable zu ersetzen, wie zum Beispiel:
var str="Hello World"; var a=str.replace(/World/g, "dxy"); console.log(a);
Das gedruckte Ergebnis ist zu diesem Zeitpunkt „Hallo dxy“. .
Zusammenfassung: Dieses Mal sind mir bei der Verwendung der Methode „replace()“ die folgenden Probleme aufgefallen:
1. Stellen Sie bei Verwendung der Methode „replace()“ zunächst sicher, dass sie nicht null oder „Called“ sein darf auf einer Variablen undefinierten Typs. Wir können ein Urteil hinzufügen und die Methode nur aufrufen, wenn die Variable einen Wert hat.
2. Bei der Ausführung der Methode replace() muss die Variable nicht nur einen Wert haben, sondern auch vom Typ String sein.
3. Um eine Methode auszuführen, müssen Sie sie entweder direkt in der Methode ausführen oder das Ergebnis über eine Variable zurückgeben.
4. Wenn der erste Parameter ein regulärer Ausdruck ist, können keine Anführungszeichen hinzugefügt werden.
Verwandte Empfehlungen:
Verwendungsbeispiele der Methode replace() in Javascript
Veraltet in ECSHOP: preg_replace()-Fehler Lösung
Einführung in die Verwendung der PHP-String-Replacement-Funktion str_replace()
Das obige ist der detaillierte Inhalt vonProbleme mit der Methode „Replace()' in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!