String strip() для JavaScript?[дубликат]
-
07-07-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
- Обрезать строку в JavaScript? 25 ответов
Какова чистая и эффективная реализация JavaScript для удаления начальных и завершающих пробелов из строки?
Например:
" dog"
"dog "
" dog "
" dog "
все превращаются в
"dog"
Решение
Используй это:
if(typeof(String.prototype.trim) === "undefined")
{
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
Функция trim теперь будет доступна в качестве первоклассной функции для ваших строк.Например:
" dog".trim() === "dog" //true
Редактировать:Принял предложение J-P объединить шаблоны регулярных выражений в один.Также добавлен глобальный модификатор по предложению Кристофа.
Позаимствовал идею Мэтью Крамли о том, чтобы обнюхать функцию trim перед ее воссозданием.Это делается в том случае, если версия JavaScript, используемая на клиенте, является более поздней и, следовательно, имеет свою собственную, встроенную функцию trim.
Другие советы
Для пользователей jquery, как насчет $.trim(s)
Гумбо уже отметил это в комментарии, но это стоит повторить в качестве ответа:в trim()
метод был добавлен в JavaScript 1.8.1 и поддерживается всеми современными браузерами (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), хотя IE 8 и старше его не поддерживают.Использование простое:
" foo\n\t ".trim() => "foo"
Смотрите также:
Вот функция, которую я использую.
function trim(s){
return ( s || '' ).replace( /^\s+|\s+$/g, '' );
}
Лучший полифилл из MDN который поддерживает удаление РОЖДЕННЫЙ и NBSP:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Имейте в виду, что изменение встроенных прототипов приводит к снижению производительности (из-за того, что движок JS отказывается от ряда оптимизаций времени выполнения), и в критических ситуациях вам может потребоваться рассмотреть альтернативу определения myTrimFunction(string)
вместо этого.При этом, если вы ориентируетесь на более старую среду без родного .trim()
служба поддержки, скорее всего, у вас возникнут более важные проблемы с производительностью, с которыми придется иметь дело.
Стивен Левитан однажды писал о том, как реализовать Более быстрая Обрезка JavaScript.На это определенно стоит посмотреть.
Если вы уже используете jQuery, то, возможно, вам захочется взглянуть на jQuery.trim()
который уже поставляется с jQuery.
Если вместо написания нового кода для обрезки строки вы просматриваете существующий код, вызывающий "strip()", и задаетесь вопросом, почему он не работает, возможно, вам захочется проверить, пытается ли он включить что-то вроде prototypejs framework, и убедиться, что он действительно загружается.
Этот фреймворк добавляет функцию strip ко всем строковым объектам, но если, например,вы обновили его, и ваши веб-страницы по-прежнему ссылаются на старый файл .js, который, конечно, не будет работать.