为了账号安全,请及时绑定邮箱和手机立即绑定

在Koa2源码中发现多次使用xx.split(/\s*,\s*/),为什么不使用

在Koa2源码中发现多次使用xx.split(/\s*,\s*/),为什么不使用

开心每一天1111 2019-02-20 21:15:14
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"]


查看完整回答
反对 回复 2019-02-21
  • 1 回答
  • 0 关注
  • 527 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信