【问题标题】:I'd like to remove the filename from a path using JavaScript我想使用 JavaScript 从路径中删除文件名
【发布时间】:2011-11-27 22:29:05
【问题描述】:

使用 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+"\"");

【问题讨论】:

    标签: javascript regex string path


    【解决方案1】:
    var urlstr = '/this/is/a/folder/aFile.txt';
    var r = /[^\/]*$/;
    urlstr.replace(r, ''); // '/this/is/a/folder/'
    

    【讨论】:

    • 感谢您的回答。我真的很喜欢正则表达式。您介意简要解释一下正则表达式部分吗?
    • 当然。 [^\/] 表示任何非斜杠([] 开头的 ^ 表示否定),后面的 * 表示匹配任意数量的字符。 $ 代表字符串的结尾。所以这个正则表达式将匹配字符串末尾的任何非斜线字符。
    【解决方案2】:

    您尚未指定任何示例输入。

    假设您始终有一个目录,那么以下将起作用。它将所有内容直到(但不包括)最后一个斜线。

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

    【讨论】:

    【解决方案3】:

    你可以使用 substring 和 indexOf:

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

    【讨论】:

    【解决方案4】:

    this answer 中所述,如果您使用的是 node.js(如果您正在处理文件路径,则公平假设)- 您可以使用 path 模块,调用 @987654323 @,并使用dir 检索目录名称,如下所示:

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

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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 2014-03-16
        • 1970-01-01
        相关资源
        最近更新 更多