486 Stimmen

Ersetzen aller Punkte in einer Zeichenkette mit JavaScript

Ich möchte alle Vorkommen eines Punktes ersetzen( . ) in einer JavaScript-Zeichenkette

Ich habe zum Beispiel:

var mystring = 'okay.this.is.a.string';

Ich möchte es bekommen: okay this is a string .

Bis jetzt habe ich es versucht:

mystring.replace(/./g,' ')

aber dabei wird die gesamte Zeichenkette durch Leerzeichen ersetzt.

6voto

kittichart Punkte 61

Ich füge einen doppelten Backslash an den Punkt an, damit es funktioniert. Jubeln.

var st = "okay.this.is.a.string";
var Re = new RegExp("\\.","g");
st = st.replace(Re," ");
alert(st);

6voto

Raz Punkte 344

replaceAll(search, replaceWith) [ MDN ]

 ".a.b.c.".replaceAll('.', ' ')
 // result: " a b c "

 // Using RegEx. You MUST use a global RegEx.
 ".a.b.c.".replaceAll(/\./g, ' ')
 // result: " a b c "

replaceAll() ersetzt ALLE Vorkommen von search con replaceWith .

Es ist eigentlich dasselbe wie die Verwendung von replace() [ MDN ] mit einem globalen Regex(*), lediglich replaceAll() ist meiner Meinung nach etwas besser lesbar.

(*) Das bedeutet, dass er auf alle Vorkommen passt.


Wichtig( ! ), wenn Sie Regex wählen:

bei Verwendung eines regexp Sie müssen das globale ("g") Flag setzen; andernfalls wird ein TypeError ausgelöst: "replaceAll muss aufgerufen werden mit einem globalen RegExp aufgerufen werden".

4voto

sstur Punkte 1699

Dies ist prägnanter/lesbarer und sollte besser funktionieren als die von Fagner Brack gepostete Variante (toLowerCase wird nicht in der Schleife ausgeführt):

String.prototype.replaceAll = function(search, replace, ignoreCase) {
  if (ignoreCase) {
    var result = [];
    var _string = this.toLowerCase();
    var _search = search.toLowerCase();
    var start = 0, match, length = _search.length;
    while ((match = _string.indexOf(_search, start)) >= 0) {
      result.push(this.slice(start, match));
      start = match + length;
    }
    result.push(this.slice(start));
  } else {
    result = this.split(search);
  }
  return result.join(replace);
}

Verwendung:

alert('Bananas And Bran'.replaceAll('An', '(an)'));

2voto

Joel Punkte 111
String.prototype.replaceAll = function(character,replaceChar){
    var word = this.valueOf();

    while(word.indexOf(character) != -1)
        word = word.replace(character,replaceChar);

    return word;
}

2voto

scripto Punkte 2301

Hier ist eine weitere Implementierung von replaceAll. Hoffentlich hilft es jemandem.

    String.prototype.replaceAll = function (stringToFind, stringToReplace) {
        if (stringToFind === stringToReplace) return this;
        var temp = this;
        var index = temp.indexOf(stringToFind);
        while (index != -1) {
            temp = temp.replace(stringToFind, stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
    };

Dann können Sie es verwenden:

var myText = "Mein Name ist George";
var newText = myText.replaceAll("George", "Michael");

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