JQuery - заменить все экземпляры символа в строке

Это не работает, и мне это нужно плохо

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

всегда получает

some multi+word+string

он всегда заменяет только для первого экземпляра, но мне нужно, чтобы он работал для всех символов +.

Ответ 1

Вам нужно использовать регулярное выражение, чтобы вы могли указать глобальный (g) флаг:

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

(я удалил $() вокруг строки, так как replace не является методом jQuery, поэтому он не будет работать вообще.)

Ответ 2

'some+multi+word+string'.replace(/\+/g, ' ');
                                   ^^^^^^

'g' = "global"

Приветствия

Ответ 3

RegEx - это способ пойти в большинстве случаев.

В некоторых случаях может быть быстрее указать больше элементов или конкретного элемента для выполнения замены:

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

Это заменяет один раз на каждую строку, но делает это с использованием более конкретного селектора.