如何从javascript中的文件夹路径获取最后一个文件夹名称?

在javascript / jquery中,给出了一个文件夹的路径,如:

"http://www.blah/foo/bar/" 

要么

 "http://www.blah/foo/bar" (this one doesn't have a slash in the end) 

如何提取最后一个文件夹的名称? 在这种情况下,它将是"bar"

通过内置function有一个简单的方法吗?

谢谢。

使用正则表达式的强大function:

 var name = path.match(/([^\/]*)\/*$/)[1] 

使用正则表达式! 要么:

 var arr = 'http://www.blah/foo/bar/'.split('/'); var last = arr[arr.length-1] || arr[arr.length-2]; 

这说明’ http://www.blah/foo/bar//// ‘:p(或崩溃浏览器)

 var arr = 'http://www.blah/foo/bar/////'.split('/'); var last = (function trololol(i) { return arr[i] || trololol(i-1); })(arr.length-1); 
 var myString = "http://www.blah/foo/bar"; var pathElements = myString.replace(/\/$/, '').split('/'); var lastFolder = pathElements[pathElements.length - 1]; 

这是纯JavaScript,不需要jQuery。

看看这个:

 var lastFolder = location.href.split('/').filter(function(el) { return el.trim().length > 0; }).pop(); 
 alert( location.href.split('/').filter(function(el) { return el.trim().length > 0; }).pop() ); alert( location.href ); var test = "http://www.blah/foo/bar/" ; alert( test.split('/').filter(function(el) { return el.trim().length > 0; }).pop() ); 

您可以将字符串拆分为一个列表,并通过函数获取列表中的最后一个元素。

 function checkString(stringToCheck) { var list1 = stringToCheck.split('/'); if (list1[list1.length - 1].length < 1) { var item = list1[list1.length - 2] } else { var item = list1[list1.length - 1]; } $('#results').append('Last Folder in '+stringToCheck+': '+item+'
');

}

从那里你可以找到最后一个实际元素。

JSFiddle示例

虽然它可能不是最优雅的答案,但对于可能不了解正则表达式的人来说,似乎最容易理解。

更新了JSFiddle以显示结果。

 var str = "..."; var segments = str.split("/"); var lastDir = (segments.length > 1) ? segments[segments.length - 2] : ""; 

第一个例子产生“bar”。 第二个例子产生“foo”。

如果你想忽略尾部斜杠并将最后一个段视为一个文件夹,那么对@bdesham的RegExp稍作调整就可以了:

 var segments = str.replace(/\/+$/, '').split('/'); var lastDir = (segments.length > 0) ? segments[segments.length - 1] : ""; 

一个简单的正则表达式可以完成这项工作

 var s = "toto1/toto2/toto3toto1/totofinale/"; s.replace(/^.*\/([^\/]+\/)$/, "$1")