关于trim:String strip()用于JavaScript?

String strip() for JavaScript?

本问题已经有最佳答案,请猛点这里访问。

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

例如:

" dog"

江户十一〔一〕号

埃多克斯1〔2〕

埃多克斯1〔3〕

全部变成

江户十一〔四〕号


使用此:

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

trim函数现在将作为字符串上的一级函数提供。例如:

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

编辑:采纳J-P的建议,将regex模式组合成一个模式。还根据Christoph的建议添加了全局修改器。

以马修·克拉姆利关于在重新创建修剪功能之前嗅探它的想法为例。这是在客户机上使用的javascript版本较新的情况下完成的,因此它有自己的本机微调功能。


对于jquery用户,$.trim(s)怎么样?


Gumbo已经在一条评论中指出了这一点,但这也重复了一个答案:trim()方法是在javascript 1.8.1中添加的,并且受到所有现代浏览器(firefox 3.5+、ie 9、chrome 10、safari 5.x)的支持,尽管ie 8及更高版本不支持它。用法很简单:

1
2
"  foo
\t "
.trim() =>"foo"

另请参见:

  • https://developer.mozilla.org/en/javascript/reference/global_objects/string/trim
  • http://msdn.microsoft.com/en-us/library/windows/apps/ff679971%28v=vs.94%29.aspx
  • 小精灵


    这是我使用的功能。

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

    MDN中更好的Polyfill,支持删除BOM和nbsp:

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

    请记住,修改内置原型会带来性能损失(由于JS引擎对许多运行时优化进行了限制),在性能关键的情况下,您可能需要考虑定义myTrimFunction(string)的替代方法。也就是说,如果您的目标是一个没有本机.trim()支持的旧环境,那么您可能会遇到更重要的性能问题。


    StevenLevithan曾经写过如何实现更快的javascript修剪。这绝对值得一看。


    如果您已经在使用jquery,那么您可能需要查看已经随jquery提供的jQuery.trim()


    如果不是编写新的代码来修剪字符串,而是查看调用"strip()"的现有代码,并想知道为什么它不能工作,那么您可能需要检查它是否尝试包含类似于原型pejs框架的内容,并确保它确实被加载。这个框架向所有字符串对象添加了一个strip函数,但是如果您升级了它,并且您的网页仍然引用旧的.js文件,那么它当然不会工作。