Ich möchte str_replace
oder eine ähnliche Alternative verwenden, um Text in JavaScript zu ersetzen.
var text = "this is some sample text that i want to replace";
var new_text = replace_in_javascript("want", "dont want", text);
document.write("new_text");
sollte geben
this is some sample text that i dont want to replace
Wenn Sie Regex verwenden möchten, welche Auswirkungen hat dies auf die Leistung im Vergleich zu den integrierten Ersatzmethoden?
str_replace
auch zwei Arrays gleicher Länge akzeptieren, wobei jeder String im ersten Array durch den String im zweiten Array am gleichen Index ersetzt wird. Die einzige korrekte Funktion, die ich bisher gefunden habe und die genau dieses Verhalten in Javascript nachahmt, finden Sie unter stackoverflow.com/a/5069776/296430 .Antworten:
Die Verwendung von Regex zum Ersetzen von Zeichenfolgen ist erheblich langsamer als die Verwendung von Zeichenfolgen.
Wie in JSPerf gezeigt , können Sie beim Erstellen eines regulären Ausdrucks unterschiedliche Effizienzstufen festlegen, die jedoch alle erheblich langsamer sind als das einfache Ersetzen von Zeichenfolgen. Die Regex ist langsamer, weil :
Für einen einfachen Testlauf auf der JS perf-Seite habe ich einige der Ergebnisse dokumentiert:
Die Ergebnisse für Chrome 68 lauten wie folgt:
Der Vollständigkeit halber ist diese Antwort (aus den Kommentaren entlehnt) erwähnenswert, dass
.replace
nur die erste Instanz des übereinstimmenden Zeichens ersetzt wird. Es ist nur möglich, alle Instanzen durch zu ersetzen//g
. Der Kompromiss zwischen Leistung und Code-Eleganz könnte als schlechter angesehen werden, wenn mehrere Instanzen ersetzt werdenname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
oder schlechterwhile (name.includes(' ')) { name = name.replace(' ', '_') }
quelle
.replace
nur die erste Instanz des übereinstimmenden Zeichens ersetzt wird. Es ist nur möglich, alle Instanzen durch zu ersetzen//g
. Der Performance-Kompromiss könnte als schlechter angesehen werden, wenn mehrere Instanzen ersetzt werden,name.replace(' ', '_').replace(' ', '_').replace(' ', '_');
oder als schlechterwhile (name.includes(' ')) { name = name.replace(' ', '_') }
Sie würden die
replace
Methode verwenden:Das erste Argument ist natürlich das, wonach Sie suchen. Es können auch reguläre Ausdrücke akzeptiert werden.
Denken Sie daran, dass die ursprüngliche Zeichenfolge dadurch nicht geändert wird. Es wird nur der neue Wert zurückgegeben.
quelle
Einfacher:
Ersetzt alle Leerzeichen durch '_'!
quelle
.replace(/\\x3B/g,';')
Alle diese Methoden ändern den ursprünglichen Wert nicht und geben neue Zeichenfolgen zurück.
Ersetzt das erste Leerzeichen durch _
Ersetzt alle Leerzeichen durch _ mit Regex. Wenn Sie Regex verwenden müssen, empfehle ich, es mit https://regex101.com/ zu testen.
Ersetzt alle Leerzeichen durch _ ohne regulären Ausdruck . Funktionsweise.
quelle
Sie sollten so etwas schreiben:
quelle
Der Code, den andere Ihnen geben, ersetzt nur ein Vorkommen, während die Verwendung regulärer Ausdrücke sie alle ersetzt (wie @sorgit sagte). Um alle "wollen" durch "nicht wollen" zu ersetzen, geben Sie uns diesen Code:
Die Variable "new_text" führt zu "dies ist ein Beispieltext, den ich nicht ersetzen möchte".
Eine Kurzanleitung zu regulären Ausdrücken finden Sie hier:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
Weitere Informationen
str.replace()
finden Sie hier:https://developer.mozilla.org/ de-US / docs / JavaScript / Reference / Global_Objects / String / replace
Viel Glück!
quelle
Nicht unbedingt. siehe die Antwort von Hans Kesting:
quelle
hm .. Hast du replace () überprüft?
Ihr Code wird so aussehen
quelle
quelle
In JavaScript rufen Sie die
replace
Methode für das String-Objekt auf, z. B."this is some sample text that i want to replace".replace("want", "dont want")
die ersetzte Zeichenfolge.quelle
JavaScript verfügt
replace()
über eine String-Objektmethode zum Ersetzen von Teilzeichenfolgen. Diese Methode kann zwei Argumente haben. Das erste Argument kann eine Zeichenfolge oder ein Muster für reguläre Ausdrücke (regExp-Objekt) sein, und das zweite Argument kann eine Zeichenfolge oder eine Funktion sein. Ein Beispiel für einereplace()
Methode mit beiden Zeichenfolgenargumenten ist unten dargestellt.Beachten Sie, dass, wenn das erste Argument die Zeichenfolge ist, nur das erste Vorkommen der Teilzeichenfolge wie im obigen Beispiel ersetzt wird. Um alle Vorkommen der Teilzeichenfolge zu ersetzen, müssen Sie einen regulären Ausdruck mit einem
g
(globalen) Flag versehen. Wenn Sie das globale Flag nicht angeben, wird nur das erste Vorkommen der Teilzeichenfolge ersetzt, auch wenn Sie den regulären Ausdruck als erstes Argument angeben. Ersetzen wir also alle Vorkommen vonone
im obigen Beispiel.Beachten Sie, dass Sie das Muster für reguläre Ausdrücke nicht in Anführungszeichen setzen, wodurch es zu einer Zeichenfolge und nicht zu einem regExp-Objekt wird. Um eine Ersetzung ohne Berücksichtigung der Groß- und Kleinschreibung vorzunehmen, müssen Sie ein zusätzliches Flag
i
angeben, das das Muster ohne Berücksichtigung der Groß- und Kleinschreibung macht. In diesem Fall ist der obige reguläre Ausdruck/one/gi
. Beachten Sie diei
hier hinzugefügte Flagge.Wenn das zweite Argument eine Funktion hat und eine Übereinstimmung vorliegt, wird die Funktion mit drei Argumenten übergeben. Die Argumente, die die Funktion erhält, sind die Übereinstimmung, die Position der Übereinstimmung und der Originaltext. Sie müssen zurückgeben, durch was diese Übereinstimmung ersetzt werden soll. Beispielsweise,
Sie können mehr Kontrolle über den Ersatztext haben, indem Sie eine Funktion als zweites Argument verwenden.
quelle
Sie können verwenden
Und um mehrere Werte in einer Zeichenfolge gleichzeitig zu ändern, z. B. um # in Zeichenfolge v und _ in Zeichenfolge w zu ändern:
quelle
Wenn Sie wirklich ein Äquivalent zu PHPs wollen
str_replace
, können Sie Locutus verwenden . Die PHP-Versionstr_replace
unterstützt mehr Optionen als das, was JavaScriptString.prototype.replace
unterstützt. Zum Beispiel Tags:oder Arrays
Auch dies verwendet keinen regulären Ausdruck, sondern for-Schleifen. Wenn Sie keinen regulären Ausdruck verwenden möchten, aber einen einfachen String ersetzen möchten, können Sie so etwas verwenden (basierend auf Locutus).
Weitere Informationen finden Sie im Quellcode https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
quelle
Es gibt bereits mehrere Antworten mit str.replace () (was für diese Frage fair genug ist),
regex
aber Sie können eine Kombination aus str.split () und join () verwenden, die schneller alsstr.replace()
und istregex
.Unten ist ein Arbeitsbeispiel:
quelle
Sie haben folgende Möglichkeiten:
Mehr Infos -> hier
quelle
Ersetzen Sie in Javascript die verfügbare Funktion, um die Unterzeichenfolge der angegebenen Zeichenfolge durch eine neue zu ersetzen. Verwenden:
Mit dieser Funktion können Sie sogar reguläre Ausdrücke verwenden. Zum Beispiel, wenn Sie alle Vorkommen von
,
durch ersetzen möchten.
.Hier wird der
g
Modifikator verwendet, um alle verfügbaren Übereinstimmungen global abzugleichen.quelle
Methode zur
replace substring in a sentence
Verwendung von React:RunMethodHere
quelle
Wenn Sie keinen regulären Ausdruck verwenden möchten, können Sie diese Funktion verwenden, die alle Zeichenfolgen ersetzt
Quellcode:
Wie benutzt man:
quelle
Das
String.prototype.replace
erste JS- Argument sollte ein Regex-Muster oder ein String sein, und das zweite Argument sollte ein String oder eine Funktion sein.str.replace(regexp|substr, newSubStr|function);
Ex:
var str = 'this is some sample text that i want to replace'; var newstr = str.replace(/want/i, "dont't want"); document.write(newstr); // this is some sample text that i don't want to replace
quelle
Sie benötigen keine zusätzlichen Bibliotheken.
quelle
Es wurde eine Methode hinzugefügt,
replace_in_javascript
die Ihren Anforderungen entspricht. Es wurde auch festgestellt, dass Sie eine Zeichenfolge schreiben,"new_text"
indocument.write()
der auf eine Variable verwiesen werden sollnew_text
.quelle