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

i4n*_*i4n 7 javascript regex string path

使用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+"\"");
Run Code Online (Sandbox Code Playgroud)

Mar*_*all 22

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

  • 当然.`[^\/]`表示任何非斜杠(在`[]`开头的`^`否定它),并且在它之后的`*`匹配任意数量的字符.`$`代表字符串的结尾.所以这个正则表达式将匹配字符串末尾的任何非斜杠字符. (4认同)

Gaz*_*ler 11

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

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

test = "/var/log/apache2/log.txt";
console.log(test.substring(0, test.lastIndexOf("/")));
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 7

您可以使用substring和indexOf:

var url = 'asdf/whatever/jpg.image';
url.substring(0, url.lastIndexOf('/'))
Run Code Online (Sandbox Code Playgroud)