web-dev-qa-db-fra.com

jQuery - remplace toutes les occurrences d'un caractère dans une chaîne

Cela ne fonctionne pas et j'en ai cruellement besoin

$('some+multi+Word+string').replace('+', ' ' );

obtient toujours

some multi+Word+string

il remplace toujours uniquement pour la première instance, mais j'ai besoin que cela fonctionne pour tous les symboles.

179
thednp

Vous devez utiliser une expression régulière pour pouvoir spécifier l'indicateur global (g):

var s = 'some+multi+Word+string'.replace(/\+/g, ' ');

(J'ai supprimé la $() autour de la chaîne, car replace n'est pas une méthode jQuery, donc cela ne fonctionnera pas du tout.)

373
Guffa
'some+multi+Word+string'.replace(/\+/g, ' ');
                                   ^^^^^^

'g' = "global"

À votre santé

35
Madbreaks

RegEx est la voie à suivre dans la plupart des cas.

Dans certains cas, il peut être plus rapide de spécifier plus d'éléments ou l'élément spécifique sur lequel effectuer le remplacement:

$(document).ready(function () {
    $('.myclass').each(function () {
        $('img').each(function () {
            $(this).attr('src', $(this).attr('src').replace('_s.jpg', '_n.jpg'));
        })
    })
});

Cela remplace le remplacement une fois sur chaque chaîne, mais à l'aide d'un sélecteur plus spécifique.

6
phyatt