去除字符串首尾空格方法交流
发布于 12 年前 作者 leolovenodejs 11300 次浏览 最后一次编辑是 8 年前

去除字符串首尾空格

去除字符串首尾空格的方法有很多,这个也很快:

alert(abc.replace(/^\s+/,'').split('').reverse().join('').replace(/^\s+/,'').split('').reverse().join(''));

测试字符串abc长度为70064,其中头空格953、有效字符60375、尾空格8736。

sogou3.0.0.3411:  172m

firefox3.6.28:    22m

opera11.64:       17m

chrome5:          5m

ie6:              172m

safari4:          10m
15 回复

为什么不这样做?

abc.replace(/^\s+|\s+$/g,"")

这样不是更简洁和直观吗?

这样的话在处理较长的字符串时就变得很慢。

@leolovenodejs 哦,,知道了,,学习了。

我都一直用 " string ".trim(); , 自带的方法速度怎么样的?

这里有一篇比较各种 trim 速度的文章,应该很深入了 http://blog.stevenlevithan.com/archives/faster-trim-javascript

’ abc '.trim() 足已。

@leolovenodejs 扼,你的这个实现太慢了吧?@ljse 的实现会比楼主的慢?

根据这篇文章,加上楼主的方法和原生的trim(),对比测试了一下结果: 原生的trim()是最快的,然后楼主的方法肯定是最不好的。

测试脚本: http://fengmk2.github.com/blog/2012/06/trim.js 测试文本数据: http://fengmk2.github.com/blog/2012/06/text.txt

测试结果:

$ node trim.js 
1000 cycles:
trim0 27 ms
trim1 302 ms
trim2 302 ms
trim3 595 ms
trim4 294 ms
trim5 306 ms
trim6 296 ms
trim7 290 ms
trim8 200 ms
trim9 540 ms
trim10 57 ms
trim11 64 ms
trim12 57 ms
trim13 3811 ms

@suqian 原生的最大问题就是 IE6-8 都不支持,我平时用 jQuery 的,$.trim()

@suqian Sorry 忘了这里在讨论 Node ……

@XiongLiding 原生的不行,可以选trim10, trim11, trim12

Sorry 忘了这里在讨论 Node ……

我是在浏览器里测的。

原生trim()方法确实很快。

@suqian 确实都比我的快,这一下我学到了好多方法了~

看到标题首先想到的是 trim() 呵呵

回到顶部