Подтвердить что ты не робот

Замените все пробелы в строке "+"

У меня есть строка, содержащая несколько пробелов. Я хочу заменить их символом плюса. Я думал, что могу использовать

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

но он заменяет только первое вхождение. Как я могу заставить его заменить все вхождения?

4b9b3361

Ответ 1

Здесь альтернатива, которая не требует регулярного выражения:

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

Ответ 2

Вам нужна опция /g (глобальная), например:

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

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

Ответ 3

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

Ответ 4

Вы также можете сделать это как

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

Посмотрите на скрипку: http://jsfiddle.net/aC5ZW/

Ответ 5

Используйте глобальный поиск в строке. g flag

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

source: replaceAll function

Ответ 6

Используйте регулярное выражение с модификатором g:

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

Из Использование регулярных выражений с JavaScript и ActionScript:

/g позволяет "глобальное" сопоставление. При использовании метода replace() укажите этот модификатор для замены всех совпадений, а не только первого.

Ответ 7

Вам нужно найти опцию replaceAll

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

это обычный способ выражения replaceAll.

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

НОМИНАЛЬНЫЙ ПРОБЕЛ

В некоторых браузерах

(MSIE "как обычно"; -))

замена пространства в строке игнорирует неразрывное пространство (код 160 char).

Следует всегда заменять:

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

Очень хорошее подробное объяснение:

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

Ответ 9

Сделайте это рекурсивно:

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