繁体   English   中英

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

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

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

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

谢谢你的帮助!

----回答和解释---

这段代码的目的是打开一个目录的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+"\"");
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("/")));

您可以使用子字符串和 indexOf:

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

本答案所述,如果您使用的是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"

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM