在 JavaScript 中从没有文件名的文件路径获取目录的最有效方法是什么?



我想从没有JavaScript文件名的文件路径中获取目录。我希望输入和输出具有以下行为。

Input: '/some/path/to/file.txt'
Output: '/some/path/to'
Input: '/some/path/to/file'
Output: '/some/path/to/file'
Input: '/some/folder.with/dot/path/to/file.txt'
Output: '/some/folder.with/dot/path/to'
Input: '/some/file.txt/path/to/file.txt'
Output: '/some/file.txt/path/to'

我想用RegExp来做这件事。但是,不确定RegExp应该如何编写。

有人能帮我提供除此之外的高效解决方案或RegExp吗?

查看您的示例,您似乎希望将除了最后一个文件名之外的任何内容都视为目录名,其中文件名总是包含一个点。

要获得该部分,您可以在Javascript中使用以下代码:

str = str.replace(//w+.w+$/, "");

Regex/w+.w+$匹配一个/和字符串末尾前的一个+字字符,后面跟着一个点,后面跟着另外一个+词字符。替换只是一个空字符串。

但是,请记住,有些文件名可能不包含任何句点,这种替换在这种情况下不起作用。

您可以使用lastIndexOf获取索引,然后使用slice获取所需结果。

const strArr = [
"/some/path/to/file.txt",
"/some/path/to/file",
"/some/folder.with/dot/path/to/file.txt",
"/some/file.txt/path/to/file.txt",
];
const result = strArr.map((s) => {
if (s.match(/.txt$/)) {
const index = s.lastIndexOf("/");
return s.slice(0, index !== -1 ? index : s.length);
} else return s;
});
console.log(result);

使用regex

const strArr = [
"/some/path/to/file.txt",
"/some/path/to/file",
"/some/folder.with/dot/path/to/file.txt",
"/some/file.txt/path/to/file.txt",
];
const result = strArr.map((s) => s.replace(//w+.w+$/, ""));
console.log(result);

相关内容

  • 没有找到相关文章

最新更新