Вопрос: Строка обрезки в JavaScript?


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


1228


источник


Ответы:


Все браузеры с 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,' ');};

850



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

$.trim('  your string   ');

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


472



Хотя есть несколько правильных ответов выше, следует отметить, что 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

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

Fire Fox: 3.5+

Сафари: 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+

Opera: 10.5+

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


158



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

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

" foo bar ".trim();  // "foo bar"

124



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

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

45



I know this question has been asked three years back.Now,String.trim() was added natively in JavaScript.For an instance, you can trim directly as following,

document.getElementById("id").value.trim();

27



Flagrant Badassery has 11 different trims with benchmark information:

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

Non-surprisingly regexp-based are slower than traditional loop.


Here is my personal one. This code is old! I wrote it for JavaScript1.1 and Netscape 3 and it has been only slightly updated since. (Original used 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);
}

20



If you are using jQuery, use the jQuery.trim() function. For example:

if( jQuery.trim(StringVariable) == '')

20