web-dev-qa-db-fra.com

Remplace tous les espaces d'une chaîne par '+'

J'ai une chaîne qui contient plusieurs espaces. Je veux les remplacer par un symbole plus. Je pensais pouvoir utiliser

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

mais cela ne remplace que la première occurrence. Comment puis-je le faire remplacer toutes les occurrences?

296
DaveDev

Voici une alternative qui ne nécessite pas de regex:

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

Vous avez besoin de l'option /g (globale), comme ceci:

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

Vous pouvez essayer ici . Contrairement à la plupart des autres langages, JavaScript, par défaut, ne remplace que la première occurrence.

434
Nick Craver
var str = 'a b c';
var replaced = str.replace(/\s/g, '+');
82
epascarello

Vous pouvez aussi le faire comme

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

Regardez le violon

58
Jitendra Pancholi

Utilisez la recherche globale dans la chaîne. g drapeau

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

source: fonction replaceAll

23
Andrew

Utilisez une expression régulière avec le modificateur g:

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

De tilisation d'expressions régulières avec JavaScript et ActionScript :

/ g active la correspondance "globale". Lorsque vous utilisez la méthode replace (), spécifiez ce modificateur pour remplacer toutes les correspondances, plutôt que la première.

22
Mark Byers

Vous devez rechercher une option replaceAll

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

il s'agit d'une méthode d'expression régulière permettant de remplacer un tout.

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;

};
8
sushil bharwani

NUMÉRO D’ESPACE

Dans certains navigateurs

(MSIE "comme d'habitude" ;-))

le remplacement d’espace dans une chaîne ignore l’espace insécable (le code de 160 caractères).

On devrait toujours remplacer comme ceci:

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

Très belle explication détaillée:

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

6
Motlicek Petr