Вопрос

На этот вопрос уже есть ответ здесь:

Какова чистая и эффективная реализация 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, который, конечно, не будет работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top