JavaScript的String strip()?

时间:2009-09-13 15:52:17

标签: javascript trim strip

从字符串中去除前导和尾随空格的干净且高效的JavaScript实现是什么?

例如:

" dog"

"dog "

" dog "

" dog "

所有人都变成了

"dog"

8 个答案:

答案 0 :(得分:193)

使用此:

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

现在,trim函数可以作为字符串的第一类函数使用。例如:

" dog".trim() === "dog" //true

编辑:采用J-P的建议将正则表达式模式合二为一。还根据Christoph的建议添加了全局修饰符。

马修·克拉姆利(Matthew Crumley)想要在重新创作之前嗅探修剪功能。这样做是为了防止客户端上使用的JavaScript版本更新,因此具有自己的原生修剪功能。

答案 1 :(得分:141)

对于jquery用户,$.trim(s)

怎么样?

答案 2 :(得分:87)

Gumbo已经在评论中注意到了这一点,但这需要重复作为答案:在JavaScript 1.8.1中添加了trim()方法,并得到所有现代浏览器的支持(Firefox 3.5 +,IE 9,Chrome 10) ,Safari 5.x),虽然IE 8及更早版本不支持它。用法很简单:

 "  foo\n\t  ".trim() => "foo"

另见:

答案 3 :(得分:12)

这是我使用的功能。

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

答案 4 :(得分:11)

来自MDN的更好的polyfill,支持删除BOMNBSP

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

请记住,修改内置原型会带来性能损失(由于JS引擎因许多运行时优化而烦恼),而在性能危急情况下,您可能需要考虑定义{{1}的替代方案而是。话虽这么说,如果你的目标是没有原生myTrimFunction(string)支持的旧环境,你可能会遇到更重要的性能问题。

答案 5 :(得分:8)

Steven Levithan曾写过如何实施Faster JavaScript Trim。这绝对值得一看。

答案 6 :(得分:7)

如果你已经在使用jQuery,那么你可能想看看已经提供jQuery的jQuery.trim()

答案 7 :(得分:6)

如果您不是编写新代码来修剪字符串,而是查看调用“strip()”的现有代码并想知道它为什么不起作用,您可能想要检查它是否尝试包含类似的内容prototypejs框架,并确保它实际上已加载 该框架为所有String对象添加了一个strip函数,但是你升级了它,你的网页仍然指的是旧的.js文件,它当然不起作用。