5465 Stimmen

Ersetzen aller Vorkommen einer Zeichenkette in JavaScript

Ich habe diese Zeichenfolge in meinem JavaScript-Code:

"Test abc test test abc test test test abc test test abc"

Tun:

str = str.replace('abc', '');

Scheint nur das erste Vorkommen von abc in der obigen Zeichenfolge.

Wie kann ich die alle Vorkommnisse davon?

10voto

SamGoody Punkte 12604

Wenn Sie sicherstellen wollen, dass die gesuchte Zeichenkette auch nach der Ersetzung nicht mehr vorhanden ist, müssen Sie eine Schleife verwenden.

Zum Beispiel:

var str = 'test aabcbc';
str = str.replace(/abc/g, '');

Wenn Sie fertig sind, haben Sie immer noch 'test abc'!

Die einfachste Schleife, um dieses Problem zu lösen, wäre:

var str = 'test aabcbc';
while (str != str.replace(/abc/g, '')){
   str.replace(/abc/g, '');
}

Dadurch wird die Ersetzung jedoch zweimal pro Zyklus durchgeführt. Vielleicht (auf die Gefahr hin, abgelehnt zu werden) lässt sich das zu einer etwas effizienteren, aber weniger lesbaren Form kombinieren:

var str = 'test aabcbc';
while (str != (str = str.replace(/abc/g, ''))){}
// alert(str); alerts 'test '!

Dies kann besonders bei der Suche nach doppelten Zeichenfolgen nützlich sein.
Wenn wir zum Beispiel 'a,,,,b' haben und alle doppelten Kommas entfernen wollen.
[In diesem Fall könnte man .replace(/,+/g,',') verwenden, aber irgendwann wird der Regex komplex und langsam genug, um stattdessen eine Schleife zu bilden.]

10voto

Cheezy Code Punkte 1615

Obwohl die Verwendung von Regex erwähnt wurde, gibt es einen besseren Ansatz, wenn Sie den Text unabhängig von der Groß-/Kleinschreibung des Textes ersetzen möchten. Zum Beispiel Groß- oder Kleinbuchstaben. Verwenden Sie die folgende Syntax

//Consider below example
originalString.replace(/stringToBeReplaced/gi, '');

//Output will be all the occurrences removed irrespective of casing.

Sie können das ausführliche Beispiel aquí .

8voto

Reza Fahmi Punkte 270

Einfach hinzufügen /g

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

zu

// Replace 'hello' string with /hello/g regular expression.
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

/g bedeutet global

8voto

francis Punkte 1763

Mit Regex i Flagge für Groß- und Kleinschreibung wird nicht berücksichtigt

console.log('App started'.replace(/a/g, '')) // App strted
console.log('App started'.replace(/a/gi, '')) // pp strted

7voto

prime Punkte 12730

Dies kann durch reguläre Ausdrücke erreicht werden. Ein paar Kombinationen, die jemandem helfen könnten:

var word = "this,\\ .is*a*test,    '.and? / only /     'a \ test?";
var stri = "This      is    a test         and only a        test";

Ersetzt alle nicht alphanumerischen Zeichen,

console.log(word.replace(/([^a-z])/g,' ').replace(/ +/g, ' ')); 
Result: [this is a test and only a test]

Um mehrere zusammenhängende Leerzeichen durch ein Leerzeichen zu ersetzen,

console.log(stri.replace(/  +/g,' ')); 
Result: [This is a test and only a test]

Um alle *-Zeichen zu ersetzen,

console.log(word.replace(/\*/g,'')); 
Result: [this,\ .isatest,    '.and? / only /     'a  test?]

So ersetzen Sie Fragezeichen (?)

console.log(word.replace(/\?/g,'#')); 
Result: [this,\ .is*a*test,    '.and# / only /     'a  test#]

Um Anführungszeichen zu ersetzen,

console.log(word.replace(/'/g,'#'));  
Result: [this,\ .is*a*test,    #.and? / only /     #a  test?]

Um alle ' Zeichen zu ersetzen,

console.log(word.replace(/,/g,'')); 
Result: [this\ .is*a*test    '.and? / only /     'a  test?]

Um ein bestimmtes Wort zu ersetzen,

console.log(word.replace(/test/g,'')); 
Result: [this,\ .is*a*,    '.and? / only /     'a  ?]

Zum Ersetzen des Schrägstrichs,

console.log(word.replace(/\\/g,''));  
Result: [this, .is*a*test,    '.and? / only /     'a  test?]

Um den Schrägstrich zu ersetzen,

console.log(word.replace(/\//g,''));  
Result: [this,\ .is*a*test,    '.and?  only      'a  test?]

Alle Leerzeichen ersetzen,

console.log(word.replace(/ /g,'#'));  
Result: [this,\#.is*a*test,####'.and?#/#only#/#####'a##test?]

Zum Ersetzen von Punkten,

console.log(word.replace(/\./g,'#')); 
Result: [this,\ #is*a*test,    '#and? / only /     'a  test?]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X