簡體   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