用于JavaScript的stringstrip()?

什么是干净而高效的JavaScript实现来去除string中的前导和尾随空格?

例如:

" dog"

"dog "

" dog "

" dog "

都变成了

"dog"

用这个:

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

修剪function现在将作为您的string的一streamfunction。 例如:

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

编辑 :采取太平绅士的build议,结合正则expression式模式之一。 每个克里斯托弗的build议也join了全局修饰符。

在重新创build之前,马修·克鲁姆利(Matthew Crumley)提出了在修剪function上嗅探的想法。 这样做是为了防止客户端上使用的JavaScript版本更新,因此具有自己的本地修剪function。

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

Gumbo在评论中已经注意到了这一点,但是这个问题需要重复一遍: trim()方法是在JavaScript 1.8.1中添加的,并且受所有现代浏览器(Firefox 3.5+,IE 9,Chrome 10,Safari 5.x ),尽pipeIE 8和更旧版本不支持它。 用法很简单:

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

也可以看看:

支持去除BOM和NBSP的更好的来自MDN的 polyfill :

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

请记住,修改内置的原型会带来性能问题(由于JS引擎会在很多运行时优化中myTrimFunction(string) ),而在性能危急的情况下,您可能需要考虑定义myTrimFunction(string)替代方法。 这就是说,如果你的目标是没有原生的.trim()支持的旧环境,你可能会遇到更重要的性能问题。

这是我使用的function。

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

史蒂芬Levithan曾经写过如何实现更快的JavaScript修剪 。 这绝对值得一看。

如果您已经使用jQuery,那么您可能需要查看jQuery.trim() ,它已经提供了jQuery。

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