2013-04-26 52 views
6

的最后一部分,我需要得到的JavaScript当前URI的最后一部分,像获取URI

www.example.com/apple/beer/cucumber

它应该返回

黄瓜

www.example.com/apple/beer/

它应该返回

啤酒

我想出了下面的代码:

var url = window.location.pathname; 
var urlsplit = url.split("/"); 
var action = urlsplit[urlsplit.length-1]; 

可以这样做吗她的改进? 如果不是,这篇文章可能会帮助其他人试图找到同样问题的解决方案。

解决方案

感谢所有,这似乎是最短的(希望最好)的解决方案:

var action = window.location.pathname.split("/").slice(-1)[0]; 
+0

这是不是被标记为重复的问题的副本。这是一个更具体的要求,也是一个合理的要求(我自己只是需要它 - 让道路是一回事,让最后一部分是另一回事)。 – acdcjunior 2017-07-28 21:52:29

回答

7

这是一个有点短,但您的解决方案肯定是正确的。

var url = window.location.pathname; 
var urlsplit = url.split("/").slice(-1)[0]; 

或者,如PSR说,你可以使用substr:

var url = window.location.pathname; 
url.substr(url.lastIndexOf('/') + 1); 
+0

看到我更新我的回答 – PSR 2013-04-26 13:37:46

+1

你更新我的:) – 2013-04-26 13:38:26

+1

对不起搞错了我更新你的代码。请更正您的代码 – PSR 2013-04-26 13:39:26

1

您可以使用

url.substr(url.lastIndexOf('/') + 1) 
+0

是不是只会返回最后一个字符? – Gareth 2013-04-26 13:36:43

+0

@Gareth Nope,'substr'返回一系列字符。在这种情况下,只有起始点被提供,所以它从那里返回子字符串到结尾 – Ian 2013-04-26 13:46:59

+1

@ Ian Right,但是当我离开这个注释时,答案是'url.slice(-1)' - 那时是忍者 - 在5分钟的宽限期内编辑,在告诉你编辑的每个人之前,SO给你;) – Gareth 2013-04-26 14:33:48

-1

location.pathname.match(/([^\/]+)$/)[1]

这实质上说采取AREN的所有字符从路径尽头的斜线,并返回该序列。

9

遗憾的是没有一个答案迄今在网址尾/喜欢你的www.example.com/apple/beer/例如工作。
这里有一个解决方案,也能在这种情况下:

window.location.pathname.split('/').filter(function(el){ return !!el; }).pop(); 

的jsfiddle测试用例: http://jsfiddle.net/EMK6t/

+0

是的,你是对的。我会'如果最后一个字符是斜线,删除它',但该片断肯定会更好。 – keeri 2013-04-28 17:28:33

+0

完美。看起来几乎没有人会考虑以斜线结尾的URL。好的片段! – 2016-05-17 13:53:16

+0

真棒....... :) – 2017-08-16 18:45:34