使用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+"\"");
答案 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"
这应该是在不同环境中管理和解析文件路径的最可靠的方法。