Замена пробелов подчеркиванием в JavaScript? - PullRequest
304 голосов
/ 14 января 2009

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

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

Ответы [ 8 ]

597 голосов
/ 14 января 2009

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

Редактировать : или .split(' ').join('_'), если у вас отвращение к РЭ

Редактировать : Джон Резиг сказал :

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

60 голосов
/ 14 января 2009

попробуйте это:

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

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

JavaScript заменяет

53 голосов
/ 13 февраля 2009

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

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

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

key=key.replace(/\s+/g,"_");
20 голосов
/ 23 мая 2014

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

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

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

17 голосов
/ 09 июня 2011

Я создал для него тест производительности JS http://jsperf.com/split-and-join-vs-replace2

10 голосов
/ 21 марта 2016

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

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

Вывод: How_are_you

4 голосов
/ 16 декабря 2014

Я знаю, что это старый, но я не видел никого, кто бы упоминал расширение строки 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.
};
1 голос
/ 25 июня 2018

var text = 'Hello World';

new_text = text.replace ('', '_');

console.log (новый_текст);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...