String strip () для JavaScript? [дубликат]


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

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

для пример:

" dog"

"dog "

" dog "

" dog "

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

"dog"

8 154

8 ответов:

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

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

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

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

EDIT: принял предложение J-P объединить шаблоны регулярных выражений в один. Также добавлен глобальный модификатор по предложению Кристофа.

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

для пользователей 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 который поддерживает удаление BOM и NBSP:

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

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

Стивен Levithan когда-то писал о том, как реализовать Быстрее JavaScript Trim. Это определенно стоит посмотреть.

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

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