兼容Linux和windows路径截取,node中处理windows和linux的路径分隔符兼容

在编写node程序的时候,经常会遇到的问题是path.resolve或者relative方法返回的结果在linux和windows下不一样。linux返回的路径分隔符是左斜杠(/),而windows返回的路径分隔符是右斜杠(\\)。 大部分情况下,我们不需要做额外的处理,各自维护自己的路径

cf4ee1f211f5e313abfc468e5aeb3516.png

在编写node程序的时候,经常会遇到的问题是path.resolve或者relative方法返回的结果在linux和windows下不一样。linux返回的路径分隔符是左斜杠(/),而windows返回的路径分隔符是右斜杠(\\)。

大部分情况下,我们不需要做额外的处理,各自维护自己的路径格式即可,程序本身不需要关心返回的路径格式。但是在调用一些其他模块的时候,可能会遇到这样的问题。

分隔符本来也不是什么大问题,但肯定不是简单的字符串替换能解决的。比如,我们需要将windows下拿到的路径转换成linux下的路径。

D:\\desktop\\dev\\workspace\\k2\\seed\\seed.js

第一反应是使用replace来解决

'D:\\desktop\\dev\\workspace\\k2\\seed\\seed.js'.replace(/\\/g, '/')

其实在写上面的代码的时候,你已经意识到问题了,反斜杠(\\)在字符串中是作为转义符存在的,而“\\”这样才能表示一个正常的反斜杠字符。

似乎,从javascript本身很难找到解决方案,还是看看node文档上有没有相关的解决方案吧。

我们在path中可以看到一个path.sep属性,看例子也很普通,感觉可以不用,直接用javascript语言本身的特性也能解决,但是在我们遇到的这个问题上,这个属性应该是唯一的解决方案了。

比较推荐的方式是使用path.sep来代替正则的匹配,主要作用是保证代码兼容性的同时也增加代码的可读性,不需要考虑系统版本。

'D:\\desktop\\dev\\workspace\\k2\\seed\\seed.js'.split(path.sep).join('/');

当然,看了下python等语言也有类似的属性,对于后端来说可能是比较熟悉了。我就仅仅记录下,防止忘记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值