Строка strip() для JavaScript?

Какая чистая и эффективная реализация JavaScript позволяет сбрасывать ведущие и конечные пробелы из строки?

Например:

" dog"

"dog "

" dog "

" dog "

все превращаются в

"dog"

Ответ 1

Используйте это:

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

Теперь функция обрезки будет доступна как функция первого класса в ваших строках. Например:

" dog".trim() === "dog" //true

РЕДАКТИРОВАТЬ: предложил J-P для объединения шаблонов регулярных выражений в один. Также добавлен глобальный модификатор по предложению Кристофа.

Взял идею Мэтью Крамли о том, чтобы обнюхивать функцию триммера перед ее воссозданием. Это делается в случае, если версия JavaScript, используемая на клиенте, является более поздней и, следовательно, имеет свою собственную функцию обрезки.

Ответ 2

Для пользователей jquery, как насчет $.trim(s)

Ответ 3

Gumbo уже отметил это в комментарии, но это повторяется как ответ: метод trim() был добавлен в JavaScript 1.8.1 и поддерживается всеми современными браузерами (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), хотя IE 8 и старше не поддерживают его. Использование прост:

 "  foo\n\t  ".trim() => "foo"

См. также:

Ответ 4

Лучше polyfill из MDN, который поддерживает удаление Спецификация и NBSP:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

Имейте в виду, что изменение встроенных прототипов сопровождается поражением производительности (из-за того, что JS-движок запускает несколько оптимизаций во время выполнения), и в критических ситуациях производительности вам может потребоваться альтернатива определения myTrimFunction(string) вместо, При этом, если вы ориентируетесь на более старую среду без поддержки native .trim(), у вас, вероятно, будут более важные проблемы с производительностью.

Ответ 5

Здесь используется функция.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

Ответ 7

Если вы уже используете jQuery, вам может понадобиться посмотреть jQuery.trim(), который уже предоставлен с помощью jQuery.

Ответ 8

Если вместо написания нового кода для обрезки строки вы смотрите на существующий код, который вызывает "strip()", и задается вопросом, почему он не работает, вы можете проверить, пытается ли он включить что-то вроде структуру prototypejs и убедитесь, что она действительно загружается.
Эта структура добавляет функцию полосы для всех объектов String, но если, например, вы обновили его, и ваши веб-страницы все еще ссылаются на старый .js файл, он, конечно, не будет работать.