我想使用JavaScript从路径中删除文件名

I'd like to remove the filename from a path using JavaScript

本文关键字:路径 删除 文件名 JavaScript      更新时间:2023-09-26

使用Javascript,我想从字符串(path+filename)的末尾删除文件名,只留下目录路径。

正则表达式是理想的吗?或者,是否有更简单的方法使用字符串对象?

谢谢你的帮助!

——回答,解释——

这段代码的目的是打开一个目录的查找器。我能够提取的数据包括一个文件名-因为我只是试图打开finder (mac)到该位置,我需要剥离文件名。下面是我最后写的:

var theLayer = app.project.activeItem.selectedLayers[0];
//get the full path to the selected file
var theSpot = theLayer.source.file.fsName;
//strip filename from the path
var r = /[^'/]*$/;
var dirOnly = theSpot.replace(r, '');
//use 'system' to open via shell in finder
popen = "open"
var runit = system.callSystem(popen+" "+"'""+dirOnly+"'"");
var urlstr = '/this/is/a/folder/aFile.txt';
var r = /[^'/]*$/;
urlstr.replace(r, ''); // '/this/is/a/folder/'

您没有指定任何示例输入。

假设您总是有一个目录,那么下面的操作将工作。它包含直到(但不包括)最后一个斜杠的所有内容。

test = "/var/log/apache2/log.txt";
console.log(test.substring(0, test.lastIndexOf("/")));

可以使用substring和indexOf:

var url = 'asdf/whatever/jpg.image';
url.substring(0, url.lastIndexOf('/'))

我知道这是一个非常古老的问题,已经回答了,但是我的要求是删除文件,如果它存在于给定的路径中,或者不做任何事情,如果它的文件夹已经。

接受的答案的正则表达式不适合我,所以我使用了这个:

let FilePathString = '/this/is/a/folder/aFile.txt';
let FolderPathString = '/this/is/a/folder/';
const RegexPattern = /[^'/]('w+'.'w+$)/i;
console.log(FilePathString.replace(RegexPattern, '')); // '/this/is/a/folder/'
console.log(FolderPathString.replace(RegexPattern, '')); // '/this/is/a/folder/'

正如在这个答案中所指出的,如果您正在使用node.js(如果您正在处理文件路径的合理假设)-您可以使用path模块,调用path.parse,并像这样使用dir检索目录名:

const path = require("path")
let myPath = "folder/path/file.txt"
let myDir = path.parse(myPath).dir
console.log(myDir) // "folder/path"

这应该是管理和解析跨不同环境的文件路径的最健壮的方法。