var a = ',,,111,,,';console.time('测试 a 速度')a.split(/\s*,\s*/)[0]console.timeEnd('测试 a 速度')console.time('测试 b 速度')a.split(',')[0]console.timeEnd('测试 b 速度')上面代码可以测试出b的速度明显比a的快,然而在Koa2源码中发现多次使用xx.split(/s,s/),为什么不使用xx.split(',')?希望可以得到解答,万分感谢!下面图片是Koa2 lib > request.js文件中的一部分截图:
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
/\s*,\s*/这个正则匹配的是0到多个空白符,然后是逗号,然后是0到多个空白符;
split(/\s*,\s*/)和split(',')的区别是要不要处理逗号前后的空白符;
一般情况下,我们认为字符串前后的空白符都是没有什么作用的,所以会使用string.trim()方法来去掉前后的空白符。
所以,假设需要处理的字符串是"Nancy , Lucy",我们想要的结果是["Nancy", "Lucy"]
那么,使用split(/\s*,\s*/)的结果就是想要的结果:
var str = "Nancy , Lucy"
str.split(/\s*,\s*/) // ["Nancy", "Lucy"]
如果使用split(','),则我们需要对split之后的数组的每个元素多进行一次trim()操作:
var str = "Nancy , Lucy"
var result = str.split(',') // ["Nancy ", " Lucy"]
result = result.map(item => item.trim()) // 此时result为["Nancy", "Lucy"]
添加回答
举报
0/150
提交
取消