【发布时间】:2019-04-09 09:35:38
【问题描述】:
Node.js 官方文档提供了这个例子:
path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'
但是,我实际上想要'asdf' 而不是完整路径'/foo/bar/baz/asdf'。
尽管进行了一些字符串操作,但最好的方法是什么,或者有什么官方 API 可以直接获取那段字符串?
【问题讨论】:
Node.js 官方文档提供了这个例子:
path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'
但是,我实际上想要'asdf' 而不是完整路径'/foo/bar/baz/asdf'。
尽管进行了一些字符串操作,但最好的方法是什么,或者有什么官方 API 可以直接获取那段字符串?
【问题讨论】:
您可以在 path.dirname() 返回的目录路径上使用path.basename(),如下所示。此方法返回给定路径的最后一部分。
const path = require('path');
const dirPath = path.dirname('/foo/bar/baz/asdf/quux');
console.log(path.basename(dirPath))
【讨论】:
我相信这行简单的代码应该会给你想要的结果。
path.basename(path.dirname(''/foo/bar/baz/asdf/quux''))
【讨论】:
官方 API 或模块也可以进行字符串操作,非常简单:
path.dirname('/foo/bar/baz/asdf/quux').split("/").pop(); // asdf
适用于所有平台:
path.dirname('/foo/bar/baz/asdf/quux').split(/\/|\\/).pop(); // asdf
【讨论】:
path.basename(),因为您的解决方案不会在文件路径的呈现中捕捉到平台特定的差异。例如,您的代码在 Windows 上可能会失败,因为此平台上的路径分隔符是 `\`。