在javascript中修剪()的最佳方法是什么?

MDC*_*ore 40 javascript string jquery

问题说明了一切; JS似乎没有原生的trim()方法.

Dar*_*ein 41

jQuery的最短形式:

string = $.trim(string);
Run Code Online (Sandbox Code Playgroud)

链接


Pat*_*Pat 31

根据这个页面,最好的全能方法是

return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
Run Code Online (Sandbox Code Playgroud)

当然,如果您使用的是jQuery,它将为您提供优化的trim方法.

  • \ s\s*是多余的. (4认同)
  • 这是一个旧线程,同时本机修剪是用Javascript实现的。Pat的正则表达式以及Chris MacDonald提到的trim11都非常慢,而在某些浏览器中,jQuery的修剪也很慢(http://jsperf.com/mega-trim-test/16)。更快速的修剪实现在这里:http://stackoverflow.com/a/12547889/1691517。 (2认同)

K. *_*R. 19

我知道这个问题很古老但是现在,Javascript确实有一个原生的.trim()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

  • 你是对的!原生总是更好。它仅来自 IE9 及更高版本,但在几年内也无关紧要。 (2认同)
  • @KR 所以我五年半前问过这个问题。从那时起,trim() 已成为标准函数。我考虑只是指出我们在 IE 支持方面*几乎*在那里,但再过五年半就没有实际意义了。如果他们坚持使用 IE8,我宁愿人们使用本机函数并使用许多其他答案之一。 (2认同)

giz*_*zmo 18

好吧,正如很多人总是说的那样,trim函数运行得很好,但是如果你不想仅使用整个框架来执行修剪,那么查看它的实现可能会很有用.所以这里是:

function( text ) { return (text || "").replace( /^(\s|\u00A0)+|(\s|\u00A0)+$/g, "" );}
Run Code Online (Sandbox Code Playgroud)

与此处提出的其他解决方案相比,我在此实现中看到的主要优点是:

  • 'g'标志,允许您在多行字符串上执行修剪
  • (text ||"")语法确保函数始终有效,即使传递的参数为null或未定义.


Ric*_*ner 8

正如其他几个人已经指出的那样,通常最好通过使用第三方JS库来做这种事情.并不是修饰()是一个复杂的功能来自己构建,但有许多功能不是您可能需要的JavaScript本机并最终自己编写,使用库很快就会变得更具成本效益.

当然,使用JS库的另一个好处是作者努力确保这些功能可以在所有主流浏览器中运行,这样您就可以编写标准接口并忘记Internet Explorer与所有浏览器之间的烦恼差异其他浏览器.


har*_*rpo 7

@ Pat的一个稍微小一点的版本.

return str.replace( /^\s+|\s+$/g, '' );
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 6

对于ltrim,将没有任何东西替换为锚定在字符串开头的空格:

str2 = str.replace(/^\s+/,'');
Run Code Online (Sandbox Code Playgroud)

对于rtrim,将没有任何东西替换为锚定在字符串末尾的空格:

str2 = str.replace(/\s+$/,'');
Run Code Online (Sandbox Code Playgroud)

修剪:

str2 = str.replace(/^\s+|\s+$/g,'');
Run Code Online (Sandbox Code Playgroud)

这些都使用正则表达式来完成实际工作.


Ben*_*nry 5

为什么不修改String原型?为什么不从开源库窃取修剪函数,就像我在这里使用YUI一样?(你真的需要为这个简单的设备加载和整个框架吗?)把它们放在一起你得到这个:

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

var s = " hello ";
alert(s.trim() == "hello"); // displays true
Run Code Online (Sandbox Code Playgroud)


Ion*_*tan 5

使用Ariel Flesler的快速修剪功能:

// Licensed under BSD
function myBestTrim( str ){
 var start = -1,
  end = str.length;
 while( str.charCodeAt(--end) < 33 );
 while( str.charCodeAt(++start) < 33 );
 return str.slice( start, end + 1 );
};
Run Code Online (Sandbox Code Playgroud)

不过,我的解决方案就是这样(因为Firefox 3.5及更高版本中的String对象已经有了一个trim方法):

String.prototype.trim = String.prototype.trim || function () {
    var start = -1,
        end   = this.length;

    while( this.charCodeAt(--end) < 33 );
    while( this.charCodeAt(++start) < 33 );

    return this.slice( start, end + 1 );
};
Run Code Online (Sandbox Code Playgroud)