JavaScript的String strip()?[重复]

2020/10/20 04:21 · javascript ·  · 0评论

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

例如:

" dog"

"dog "

" dog "

" dog "

都变成了

"dog"

用这个:

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

修剪函数现在将作为字符串的一等函数提供。例如:

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

编辑:采纳了JP的建议,将正则表达式模式组合为一个。还根据Christoph的建议添加了全局修饰符。

重新创建修整功能之前,请听取Matthew Crumley的想法。如果客户端使用的JavaScript版本较新,因此具有自己的本机修整功能,则可以这样做。

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

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

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

也可以看看:

这是我使用的功能。

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

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

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

请记住,修改内置原型会带来性能上的损失(由于JS引擎依赖于许多运行时优化),在性能至关重要的情况下,您可能需要考虑使用定义的myTrimFunction(string)替代方法。话虽这么说,如果您针对的是没有本机.trim()支持的较旧环境,则可能会遇到更重要的性能问题。

Steven Levithan曾经写过一篇关于如何实现Faster JavaScript Trim的文章绝对值得一看。

如果您已经在使用jQuery,那么您可能想看看jQuery.trim()jQuery已经提供了哪些功能。

如果您正在查看调用“ strip()”的现有代码并想知道为什么它不起作用,而不是编写新代码来修剪字符串,则可能需要检查它是否尝试包含诸如prototype.js框架之类的内容,并确保它实际上已被加载。

该框架向所有String对象添加了一个strip函数,但是,例如,如果您对其进行了升级,并且您的网页仍在引用旧的.js文件,则它当然将不起作用。

本文地址:http://javascript.askforanswer.com/javascriptdestring-stripzhongfu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!