如何跨Windows/Unix系统获取文件夹basename?Node.js原生方案求助
兼容Windows和Unix路径的basename获取方法
你完全可以不用正则转换,直接利用Node.js path 模块(或path-browserify)的原生能力处理跨平台路径:
方法1:按路径类型调用对应平台的basename方法
path 模块内置了path.win32和path.posix两个子模块,分别对应Windows和Unix风格的路径处理。通过判断路径中是否包含Windows分隔符\,就能选择适配的方法:
import * as path from 'path'; function getBasename(directory) { return directory.includes('\\') ? path.win32.basename(directory) : path.posix.basename(directory); } // 测试示例 getBasename('C:\\path\\to\\Documents'); // 返回 "Documents" getBasename('/path/to/Documents'); // 返回 "Documents"
方法2:用path.parse提取信息(指定平台)
如果需要获取更多路径细节,也可以用path.parse,同样通过指定平台来解析:
import * as path from 'path'; function getBasename(directory) { const parsedPath = directory.includes('\\') ? path.win32.parse(directory) : path.posix.parse(directory); return parsedPath.base; // 若需去除扩展名,改用parsedPath.name }
方法3:通用拆分方式(无需平台判断)
如果不想做平台判断,也可以直接用正则拆分两种分隔符,过滤空项后取最后一段——逻辑和你的正则思路类似,但更简洁:
function getBasename(directory) { return directory.split(/[\\/]/).filter(Boolean).pop() || ''; }
前两种方案完全基于path模块的原生能力,能完美替代你当前的正则转换方式。
内容的提问来源于stack exchange,提问作者Get Off My Lawn
相关产品推荐
相关产品推荐

