如何从使用JavaScript / jQuery的URL拉文件名?
某个variables可能包含相对path或绝对path。 无论哪种方式,我需要能够从variables拉文件名:
dir1/dir2/filename.gif
目录结构也是任意的。 所以基本上给了上面的任何一个url(与arbirtrary目录结构)我需要拉'filename.gif'。 提前致谢
var index = yourstring.lastIndexOf("/") + 1; var filename = yourstring.substr(index);
更短的方法
var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1);
var filename = url.match(/.*\/(.*)$/)[1];
我会使用一个正则expression式。
[^/]*$
它会select最后一个斜杠后的所有内容,直到结束。 您可以扩展它以分别select扩展名:
/([^/]*?)(\.[^\./]*)?$
var path = window.location.pathname; var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
如果你不希望你的查询string是你的文件名的一部分(你可能不这样做)的情况下使用它。
var URL = window.location.pathname; // Gets page name var page = URL.substring(URL.lastIndexOf('/') + 1); alert(page);
var filename= url.split('/').pop()
对于你的例子,子串search可能是你最好的select。
但是,如果你的URI真的很复杂,你可以试试Steven Levithan的parseUri
:
parseUri(uri).file;
它有2个模式,每个都有它的怪癖的份额,所以一定要看看演示 。
// Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1);
使用正则expression式,沿着这些线应该做的伎俩:
[^/]+\.[^/]+
尽pipe这并不能涵盖所有可能的情况,但对于大多数情况来说,这应该是比较合适的。 你可以使用这些:
var url = window.location.href; var regex = new RegExp("[^/]+\.[^/]+"); var fileName = regex.exec(url);
希望有所帮助
var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0];
var pathnameArray = window.location.pathname.split("/"); var nameOfFile = pathnameArray[pathnameArray.length -1];
当考虑制作一个数组而不是使用别人提到的substr时,可能会有一些开销我不知道。 所以也许这不是一个好的答案,而是解决同样问题的另一种方法。
谢谢山姆,似乎工作,但你有我的朋友错字:
// Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(filePath.lastIndexOf("/") + 1);
如果你的url是这样的:
yourdomain.com/app_dev.php yourdomain.com/app_dev.php/article/2
而你只想拉文件名(/app_dev.php),以便你可以链接到你的主页使用这个:
var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1)); window.location = filename;