题 在JavaScript中修剪字符串?


如何修剪JavaScript中的字符串?


1235
2018-01-31 15:12


起源


值得一提的是,在提出这个问题两年后,String.trim()在JavaScript 1.8.1 / ECMAScript 5中原生添加,支持:Firefox 3.5 +,Chrome / Safari 5 +,IE9 +(仅限标准模式!) scunliffe的回答: stackoverflow.com/a/8522376/8432 - wweicker
String.trim() 也可以在Node.js中开箱即用。 - Brad
挑剔: String.trim(),类方法,在ES5 / Node.js中不存在;代替, String.prototype.trim(),实例方法,存在。用法: ' foo '.trim()不是 String.trim(' foo ')。 - frontendbeauty
OMG,2013年和IE9在compat模式下对String没有trim()方法! - dbrin
值得注意的是,在jQuery中, $.trim(str) 始终可用。 - Sygmoral


答案:


IE9 +以来的所有浏览器都有 trim()

对于那些不支持的浏览器 trim(),你可以使用这个polyfill 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,' ');};

857
2018-01-31 15:26



值得注意的是,在jQuery中, $.trim(str) 始终可用。 - Sygmoral


修剪来自 jQuery的 如果您已经在使用该框架,那么很方便。

$.trim('  your string   ');

我经常使用jQuery,所以用它修剪字符串对我来说很自然。但是有可能在那里对jQuery产生强烈反对? :)


475
2018-01-31 15:16



这只修剪空白(换行符)..它不像php trim那样工作,你也可以修剪字符 - Jeffz


虽然上面有一堆正确答案,但应该注意的是 String JavaScript中的对象具有本机 .trim() 方法 ECMAScript 5。因此,理想情况下,任何对trim方法进行原型设计的尝试都应该检查它是否已经存在。

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

本机添加: JavaScript 1.8.1 / ECMAScript 5

因此支持:

火狐: 3.5+

苹果浏览器: 5+

IE浏览器: 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/


160
2017-12-15 15:21





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

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

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

124
2018-01-31 15:14





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

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

45
2018-01-31 15:15





我知道这个问题已在三年前被问过了。现在,String.trim() 在JavaScript中本地添加。例如,您可以直接修剪如下,

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

27
2018-01-25 11:02



这不适用于ie版本,如果可以的话,使用jQuery methd $ .trim(str) - Ben Taliadoros


公然的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);
}

20
2018-03-10 13:38



现在有12个。感谢反馈。 - Ross


如果您使用的是jQuery,请使用 jQuery.trim() 功能。例如:

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

20
2017-08-18 13:38





使用原生JavaScript方法: String.trimLeft()String.trimRight(),和 String.trim()


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

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

12
2018-02-23 05:32



@Brad True,但他们仍然拥有广泛的浏览器支持。并且polyfill处理任何不一致。 - Web_Designer
你应该考虑删除你的答案。它没有添加任何尚未被其他答案覆盖5倍的内容。 - Brad
@Brad我没见过有人提过 trimLeft 要么 trimRight。 - Web_Designer
stackoverflow.com/a/498995/362536 - Brad
@Brad我更喜欢本机JavaScript实现。那个答案是自己的答案 lTrim() 和 rTrim() 方法。 - Web_Designer


现在你可以使用几天了 string.trim() 这是本机Javascript实现

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

也可以看看


11
2017-12-01 22:59