2010-03-26 186 views
21

我有一個圖像的完整路徑,我正在使用jquery閱讀,形式爲$('img.my_image').attr('src')但是我只想要文件名部分(放棄路徑)。從JavaScript路徑獲取文件名

是否有任何內置函數來做到這一點,或將正則表達式是唯一的選擇?

+0

http://stackoverflow.com/questions/1302306/how-to-pull-the-file-name-from-a-url-using-javascript-jquery/1302339#1302339 – Gregoire 2010-03-26 19:22:33

+0

啊冷靜,我做了搜索,但它可能是文件名!=文件名使我找不到它。您需要拆分(\和/);您需要拆分linux和mac的 – DCD 2010-03-26 19:23:42

回答

40
var fileNameIndex = yourstring.lastIndexOf("/") + 1; 
var filename = yourstring.substr(fileNameIndex); 
+2

。 – RubbelDeCatc 2015-07-29 07:30:21

+0

如果您需要跨平臺解決方案,RubbelDeCatc的答案可以很好地適用於前向和反向。 – user1404617 2017-03-09 15:27:56

7
function getFileName(path) { 
return path.match(/[-_\w]+[.][\w]+$/i)[0]; 
} 
3

在Javascript中,你可以做

function getFileNameFromPath(path) { 
    var ary = path.split("/"); 
    return ary[ary.length - 1]; 
} 
51
var Filename= path.split('/').pop() 
+1

這是......天才! – 2014-09-02 08:19:54

+2

在我看來,這比接受的答案要好。 – Marquizzo 2014-09-08 18:34:55

+0

我認爲這應該是這樣的var Filename = path.split('\\')。pop();它測試上面的代碼,它不適用於IE和智能手機。 – Moe 2014-10-21 13:12:43

2

我發現了一個更好的版本處理UNIX和Windows類路徑字符串。

數1:

var unix_path = '/tmp/images/cat.jpg'; 
console.log(unix_path.replace(/^.*[\\\/]/, '')); 

var win_path = 'c:\\temp\images\cat.jpg'; 
console.log(win_path.replace(/^.*[\\\/]/, '')); 

輸出將被cat.jpg

編號2:(也許更快)

var unix_path = '/tmp/images/cat.jpg'; 
console.log(unix_path.split(/[\\\/]/).pop()); 

var win_path = 'c:\\temp\images\cat.jpg'; 
console.log(win_path.split(/[\\\/]/).pop()); 

輸出將被貓。 jpg

+0

第一種方法會將完整路徑連接到單個字符串,而不是用於windows路徑的斜槓。 – 2016-02-08 10:54:16

+0

@ManuM當使用字符串文字測試這些時,你必須在你的字符串中使用雙反斜槓,比如'var win_path ='c:\\ temp \\ images \\ cat.jpg';'。否則,它們不會被JavaScript解釋爲反斜槓。 – user1404617 2017-03-09 15:22:17

+0

對不起,我從來沒有用windows測試過它,但也許在windows正則表達式中由三條反斜槓(\\\)引起的雙重bs問題。 – RubbelDeCatc 2017-05-24 07:24:44

0

使用此解決方案,您可以同時獲得兩個名稱,即帶和不帶文件擴展名。

 

    //getting image source 
    var path=$('img.my_image').attr('src'); 

    //splitting url and getting filename with file extension 
    var file=path.split('/').pop(); 

    //removing extension and keeping just the filename 
    var filename=file.split('.').shift();