462 Stimmen

Ersetzen aller Leerzeichen in einer Zeichenkette durch '+'

Ich habe eine Zeichenfolge, die mehrere Leerzeichen enthält. Ich möchte diese durch ein Pluszeichen ersetzen. Ich dachte, ich könnte verwenden

var str = 'a b c';
var replaced = str.replace(' ', '+');

aber es ersetzt nur das erste Vorkommen. Wie kann ich erreichen, dass alle Vorkommen ersetzt werden?

32voto

Mark Byers Punkte 761508

Verwenden Sie einen regulären Ausdruck mit der g Modifikator:

var replaced = str.replace(/ /g, '+');

Desde Verwendung regulärer Ausdrücke mit JavaScript und ActionScript :

/g aktiviert den "globalen" Abgleich. Wenn Sie die Methode replace() verwenden, geben Sie diesen Modifikator an, um alle Übereinstimmungen zu ersetzen und nicht nur die erste.

16voto

sushil bharwani Punkte 28837

Sie müssen nach einer replaceAll-Option suchen

str = str.replace(/ /g, "+");

Dies ist ein regulärer Ausdruck, um ein replaceAll durchzuführen.

function ReplaceAll(Source, stringToFind, stringToReplace) {
    var temp = Source;
    var index = temp.indexOf(stringToFind);

    while (index != -1) {
        temp = temp.replace(stringToFind, stringToReplace);
        index = temp.indexOf(stringToFind);
    }

    return temp;
}

String.prototype.ReplaceAll = function (stringToFind, stringToReplace) {
    var temp = this;
    var index = temp.indexOf(stringToFind);

    while (index != -1) {
        temp = temp.replace(stringToFind, stringToReplace);
        index = temp.indexOf(stringToFind);
    }

    return temp;

};

7voto

Motlicek Petr Punkte 747

PROBLEM DES NICHTBRECHENDEN RAUMS

In einigen Browsern

(MSIE "wie immer" ;-))

Beim Ersetzen von Leerzeichen in einer Zeichenkette wird das nicht umgebende Leerzeichen (der 160-Zeichen-Code) ignoriert.

Man sollte immer auf diese Weise ersetzen:

myString.replace(/[ \u00A0]/, myReplaceString)

Sehr schöne ausführliche Erklärung:

http://www.adamkoch.com/2009/07/25/white-space-and-character-160/

-3voto

Rick Punkte 3

Führen Sie dies rekursiv durch:

public String replaceSpace(String s){
    if (s.length() < 2) {
        if(s.equals(" "))
            return "+";
        else
            return s;
    }
    if (s.charAt(0) == ' ')
        return "+" + replaceSpace(s.substring(1));
    else
        return s.substring(0, 1) + replaceSpace(s.substring(1));
}

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