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



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



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

8 ответов:

попробовать .replace(/ /g,"_");

Edit или .split(' ').join('_') если у вас есть отвращение к REs

Edit:Джон в отставку сказал:

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

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

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

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

javascript заменить

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

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

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

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

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

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

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

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

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

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

выход: How_are_you

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

var text = 'Hello World';

new_text = текст.заменить(' ', '_');

Comments

    Ничего не найдено.