在 JavaScript 中修剪字符串?

如何修剪 JavaScript 中的字符串?

答案

自 IE9 + 起,所有浏览器都具有trim()方法来处理字符串。

对于不支持trim()浏览器,可以使用MDN 中的以下 polyfill:

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, '');
        };
    })();
}

也就是说,如果使用jQuery ,则$.trim(str)也是可用的,并且可以处理未定义 / 空值。


看到这个:

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,' ');};

如果您已经在使用该框架,则使用jQuery修剪会很方便。

$.trim('  your string   ');

我倾向于经常使用 jQuery,因此用它修剪字符串对我来说很自然。但是可能还有反对 jQuery 的强烈反对吗? :)

尽管上面有很多正确答案,但是应该注意,JavaScript 中的String对象从ECMAScript 5开始具有本机.trim()方法。因此,理想情况下,对 trim 方法进行原型设计的任何尝试均应真正检查其是否已经存在。

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/

很多可以使用的实现 。最明显的似乎是这样的:

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

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

这里的简单版本JavaScript 修剪的一般功能是什么?

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

我知道这个问题已经问了三年了,现在在 JavaScript 中原生添加了String.trim() ,例如,您可以直接进行如下修剪,

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

如果使用的是 jQuery,请使用jQuery.trim()函数。例如:

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

公然的 Badassery有 11 种不同的带有基准信息的修饰

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

令人惊讶的是,基于正则表达式的速度比传统循环慢。


这是我个人的。该代码很旧!我是为 JavaScript1.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);
}

使用本机 JavaScript 方法: String.trimLeft()String.trimRight()String.trim()


IE9 + 和所有其他主要浏览器均支持String.trim()

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


String.trimLeft()String.trimRight()是非标准的,但除 IE 之外的所有主要浏览器均支持

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


使用 polyfill 可以轻松实现 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, '');
        };
    }
}

现在,您可以使用本机 Javascript 实现的string.trim()

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

也可以看看