Замена пробелов подчеркиванием в JavaScript?
Я пытаюсь использовать этот код для замены пробелов на_, он работает для первого пробела в строке, но все остальные экземпляры пробелов остаются неизменными. Кто-нибудь знает почему?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
8 ответов:
попробовать
.replace(/ /g,"_");Edit или
.split(' ').join('_')если у вас есть отвращение к REsEdit:Джон в отставку сказал:
Если вы ищете и заменяете через строку со статическим поиском и статическая замена это быстрее, чтобы выполните действие с помощью .сплит("матч").join ("заменить") - что кажется противоречивым, но это удается работать в самых современный браузер. (Есть изменения идя на месте, чтобы значительно улучшить исполнение .заменить (/match / g, "заменить") в следующей версии Firefox-так что предыдущее утверждение так будет недолго.)
чтобы ответить на вопрос Прасанны ниже:
как заменить несколько пробелов на одно место в 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. };
Comments