Обрезать строку в JavaScript? - PullRequest
       100

Обрезать строку в JavaScript?

1271 голосов
/ 31 января 2009

Как мне обрезать строку в JavaScript?

Ответы [ 25 ]

874 голосов
/ 31 января 2009

Все браузеры начиная с IE9 + имеют trim().

Для тех браузеров, которые не поддерживают trim(), вы можете использовать этот полифилл из MDN :

if (!String.prototype.trim) {
    (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

Смотрите это:

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

String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};

String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};
479 голосов
/ 31 января 2009

Обрезка из jQuery удобна, если вы уже используете эту платформу.

$.trim('  your string   ');

Я часто использую jQuery, поэтому для меня это естественно. Но возможно, что есть обратная реакция на jQuery? :)

163 голосов
/ 15 декабря 2011

Хотя есть несколько правильных ответов выше, следует отметить, что объект String в JavaScript имеет собственный метод .trim() с ECMAScript 5 . Таким образом, в идеале любая попытка создать прототип метода обрезки должна действительно проверить, существует ли он первым.

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

Добавлено в: JavaScript 1.8.1 / ECMAScript 5

Таким образом поддерживается в:

Firefox: 3,5 +

Safari: 5 +

Internet Explorer: IE9 + (только в стандартном режиме!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

Хром: 5 +

Опера: 10,5 +

Таблица поддержки ECMAScript 5: http://kangax.github.com/es5-compat-table/

126 голосов
/ 31 января 2009

Существует множество реализаций , которые можно использовать. Наиболее очевидным представляется что-то вроде этого:

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

" foo bar ".trim();  // "foo bar"
46 голосов
/ 31 января 2009

Простая версия здесь Что такое общая функция для JavaScript trim?

function trim(str) {
        return str.replace(/^\s+|\s+$/g,"");
}
28 голосов
/ 25 января 2012

Я знаю, что этот вопрос задавался три года назад. Теперь String.trim() был добавлен непосредственно в JavaScript. Например, вы можете сразу обрезать его следующим образом:

document.getElementById("id").value.trim();
21 голосов
/ 18 августа 2011

Если вы используете jQuery, используйте функцию jQuery.trim(). Например:

if( jQuery.trim(StringVariable) == '')
20 голосов
/ 10 марта 2011

Flagrant Badassery имеет 11 различных настроек с информацией о тестах:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

Не удивительно, что основанные на регулярных выражениях медленнее, чем традиционный цикл.


Вот мой личный. Этот код старый! Я написал его для JavaScript 1.1 и Netscape 3, и с тех пор он лишь немного обновился. (Оригинал используется String.charAt)

/**
 *  Trim string. Actually trims all control characters.
 *  Ignores fancy Unicode spaces. Forces to string.
 */
function trim(str) {
    str = str.toString();
    var begin = 0;
    var end = str.length - 1;
    while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
    while (end > begin && str.charCodeAt(end) < 33) { --end; }
    return str.substr(begin, end - begin + 1);
}
13 голосов
/ 23 февраля 2013

Используйте собственные методы JavaScript: String.trimLeft(), String.trimRight() и String.trim().


String.trim() поддерживается в IE9 + и во всех других основных браузерах :

'  Hello  '.trim()  //-> 'Hello'


String.trimLeft() и String.trimRight() не являются стандартными, но поддерживаются в всех основных браузерах , за исключением IE

'  Hello  '.trimLeft()   //-> 'Hello  '
'  Hello  '.trimRight()  //-> '  Hello'


Однако поддержка IE проста с использованием полифилла:

if (!''.trimLeft) {
    String.prototype.trimLeft = function() {
        return this.replace(/^\s+/,'');
    };
    String.prototype.trimRight = function() {
        return this.replace(/\s+$/,'');
    };
    if (!''.trim) {
        String.prototype.trim = function() {
            return this.replace(/^\s+|\s+$/g, '');
        };
    }
}
11 голосов
/ 02 декабря 2013

В наши дни вы можете использовать string.trim () , которая является нативной реализацией Javascript

var orig = "   foo  ";
console.log(orig.trim());//foo

Смотрите также

...