Замена пробелов символами подчеркивания в JavaScript?

Я пытаюсь использовать этот код для замены пробелов _, он работает для первого пространства в строке, но все остальные экземпляры пробелов остаются неизменными. Кто-нибудь знает, почему?

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}

Ответ 1

Попробуйте .replace(/ /g,"_");

Изменить: или .split(' ').join('_'), если у вас есть отвращение к REs

Изменить: Джон Ресиг сказал:

Если вы ищете и замените через строку со статическим поиском и статическую замену его быстрее выполнить действие с помощью .split( "match" ). join ( "replace" ) - которая кажется противоречащей интуиции, но она так работает в большинстве современные браузеры. (Есть изменения чтобы значительно улучшить производительность .replace(/match/g, "заменить" ) в следующей версии Firefox - поэтому предыдущий оператор долго не будет.)

Ответ 2

попробуйте следующее:

key=key.replace(/ /g,"_");

который будет выполнять глобальную поиск/замену

заменить javascript

Ответ 3

Чтобы ответить на вопрос Прасанны ниже:

Как заменить несколько пробелов на одно пространство в Javascript?

Вы использовали бы ту же функцию replace с другим регулярным выражением. Выражение для пробелов равно \s, а выражение для "1 или более раз" означает + знак плюса, поэтому вы просто замените ответ Адама следующим текстом:

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

Ответ 4

Вы можете попробовать это

 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');

Он даже заменит несколько пробелов одним "-".

Ответ 6

Замените пробелы символом подчеркивания

var str = 'How are you';
var replaced = str.split(' ').join('_');

Вывод: How_are_you

Ответ 7

Я знаю, что это старо, но я не видел, чтобы кто-нибудь упоминал о продлении строки prototype.

String.prototype.replaceAll = function(search, replace){
    if(!search || !replace){return this;} //if search entry or replace entry empty return the string
    return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};

Ответ 8

Просто с помощью replace:

var text = 'Hello World';
    
new_text = text.replace(' ', '_');
    
console.log(new_text);