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.

906voto

aefxx Punkte 23877

Sie müssen aus dem . weil es die Bedeutung "ein beliebiges Zeichen" in einem regulären Ausdruck hat.

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

322voto

Umesh Patil Punkte 10019

Eine weitere Lösung, die leicht verständlich ist :)

var newstring = mystring.split('.').join(' ');

54voto

Fagner Brack Punkte 2305
/**
 * ReplaceAll by Fagner Brack (MIT Licensed)
 * Replaces all occurrences of a substring in a string
 */
String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
    var _token;
    var str = this + "";
    var i = -1;

    if ( typeof token === "string" ) {

        if ( ignoreCase ) {

            _token = token.toLowerCase();

            while( (
                i = str.toLowerCase().indexOf(
                    _token, i >= 0 ? i + newToken.length : 0
                ) ) !== -1
            ) {
                str = str.substring( 0, i ) +
                    newToken +
                    str.substring( i + token.length );
            }

        } else {
            return this.split( token ).join( newToken );
        }

    }
return str;
};

alert('okay.this.is.a.string'.replaceAll('.', ' '));

Schneller als mit Regex...

EDITAR:
Vielleicht habe ich zu der Zeit, als ich diesen Code erstellt habe, nicht jsperf verwendet. Aber am Ende ist eine solche Diskussion völlig sinnlos, der Leistungsunterschied ist die Lesbarkeit des Codes in der realen Welt nicht wert, so dass meine Antwort immer noch gültig ist, auch wenn die Leistung unterscheidet sich von der Regex-Ansatz.

EDIT2:
Ich habe eine Bibliothek erstellt, mit der Sie dies über eine fließende Schnittstelle tun können:

replace('.').from('okay.this.is.a.string').with(' ');

Ver https://github.com/FagnerMartinsBrack/str-replace .

22voto

macemers Punkte 2174
str.replace(new RegExp(".","gm")," ")

16voto

Victor Punkte 3528

Für dieses einfache Szenario, würde ich auch empfehlen, die Methoden zu verwenden, die in Javascript eingebaut sind.

Versuchen Sie dies:

"okay.this.is.a.string".split(".").join("")

Grüße

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