Vervang alle spaties in een string met ‘+’ [DUPLICEER]

Ik heb een touwtje die meerdere ruimtes bevat. Ik wil deze vervangen door een plusteken. Ik dacht dat ik

kon gebruiken

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

Maar het vervangt alleen de eerste gebeurtenis. Hoe kan ik het alle gebeurtenissen vervangen?


Antwoord 1, Autoriteit 100%

Hier is een alternatief dat Regex niet vereist:

var str = 'a b c';
var replaced = str.split(' ').join('+');

Antwoord 2, Autoriteit 96%

U hebt de optie /g(GLOBAL) nodig, zoals deze:

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

U kunt het hier eens proberen . In tegenstelling tot de meeste andere talen, vervangt JavaScript, standaard de eerste voorval.


Antwoord 3, Autoriteit 19%

var str = 'a b c';
var replaced = str.replace(/\s/g, '+');

Antwoord 4, Autoriteit 15%

U kunt het ook doen zoals:

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

Bekijk dit fiddle .


Antwoord 5, Autoriteit 5%

Gebruik wereldwijde zoekopdracht in de string. g vlag

str.replace(/\s+/g, '+');

bron: replaceAll functie


Antwoord 6, autoriteit 5%

Gebruik een reguliere expressie met de gmodifier:

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

Van Reguliere expressies gebruiken met JavaScript en ActionScript:

/g maakt ‘algemeen’ zoeken mogelijk. Wanneer u de methode Replace() gebruikt, geeft u deze modifier op om alle overeenkomsten te vervangen, in plaats van alleen de eerste.


Antwoord 7, autoriteit 2%

Je moet op zoek naar een of andere optie ReplaceAll

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

dit is een reguliere expressiemanier om een ReplaceAll uit te voeren.

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;
};

Antwoord 8

GEMEEN RUIMTEPROBLEEM

In sommige browsers

(MSIE “zoals gewoonlijk” ;-))

het vervangen van spatie in string negeert de vaste spatie (de 160 char code).

Men moet altijd als volgt vervangen:

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

Zeer mooie gedetailleerde uitleg:

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


Antwoord 9

Doe dit recursief:

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));
}

Other episodes