Официальные документы Node.js содержат этот пример:
path.dirname('/foo/bar/baz/asdf/quux');
// Returns: '/foo/bar/baz/asdf'
Однако на самом деле я хочу 'asdf'
вместо полного пути '/foo/bar/baz/asdf'
.
Несмотря на некоторые манипуляции со строками, каков наилучший способ или есть ли какой-либо официальный API, с помощью которого я могу напрямую получить этот фрагмент строки?
Вы можете использовать путь.базовое имя() в пути к каталогу, возвращаемом path.dirname(), как показано ниже. Этот метод возвращает последнюю часть заданного пути.
const path = require('path');
const dirPath = path.dirname('/foo/bar/baz/asdf/quux');
console.info(path.basename(dirPath))
Официальный API или модуль также будет выполнять манипуляции со строками, это довольно просто:
path.dirname('/foo/bar/baz/asdf/quux').split("/").pop(); // asdf
Для всех платформ:
path.dirname('/foo/bar/baz/asdf/quux').split(//|\/).pop(); // asdf
Я считаю, что эта простая строка кода должна дать вам желаемый результат.
path.basename(path.dirname(''/foo/bar/baz/asdf/quux''))
Я думаю, что лучше использовать
path.basename()
, так как ваше решение не будет улавливать специфичные для платформы различия в представлении путей к файлам. Например, ваш код может дать сбой в Windows, так как на этой платформе разделителем путей является `\`.