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

时间:2011-09-29 18:20:21

标签: javascript regex string path

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

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

感谢您的帮助!

----答案& EXPLAINED ---

此代码的目的是将finder打开到目录。我能够提取的数据包括一个文件名 - 因为我只是试图打开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+"\"");

5 个答案:

答案 0 :(得分:21)

var urlstr = '/this/is/a/folder/aFile.txt';
var r = /[^\/]*$/;
urlstr.replace(r, ''); // '/this/is/a/folder/'

答案 1 :(得分:10)

您尚未指定任何样本输入。

假设您总是有一个目录,那么以下内容将起作用。它需要一切(但不包括)最后一个斜杠。

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

答案 2 :(得分:7)

您可以使用substring和indexOf:

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

答案 3 :(得分:0)

我知道这是一个非常老的问题,并且已经得到解答,但是我的要求是删除文件(如果该文件存在于给定的路径中)或不执行任何操作(如果它的文件夹已经存在)。

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

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/'

答案 4 :(得分:0)

this answer中所述,如果您使用的是 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"

这应该是在不同环境中管理和解析文件路径的最可靠的方法。