跳到主要内容
CNode

去除字符串首尾空格方法交流

社区
Lleolovenodejs发布于 14 年前最后回复 14 年前
14123010

去除字符串首尾空格

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

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
查看回复

回复 (14)

L
leolovenodejs#1314 年前

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

L
leolovenodejs#1214 年前

Sorry 忘了这里在讨论 Node ……

我是在浏览器里测的。

X
xiongliding#914 年前
引用 xiongliding这里有一篇比较各种 trim 速度的文章,应该很深入了 http://blog.stevenlevithan.com/archives/faster trim javascript

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

F
fengmk2#814 年前
引用 xiongliding这里有一篇比较各种 trim 速度的文章,应该很深入了 http://blog.stevenlevithan.com/archives/faster trim javascript

根据这篇文章,加上楼主的方法和原生的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
F
fengmk2#714 年前
引用 ijse为什么不这样做? abc.replace(/^\s+|\s+$/g,"") 这样不是更简洁和直观吗?

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

X
xiongliding#514 年前

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

J
jiyinyiyong#414 年前

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

I
ijse#314 年前
L
leolovenodejs#214 年前
引用 ijse为什么不这样做? abc.replace(/^\s+|\s+$/g,"") 这样不是更简洁和直观吗?

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

I
ijse#114 年前

为什么不这样做?

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

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

参与回复

登录后即可参与回复。登录