[英]How to extract end of URL in Javascript?
我在表单中有以下网址:
服务器名/应用程序/图像/缩略图/ 2012/4 /1335228884300分之23/ bb65efd50ade4b3591dcf7f4c693042b
其中serverName
是服务器的域名。
我想编写一个接受其中一个URL的JS函数,并返回最后一个(最右边)正斜杠分隔的字符串。 因此,如果上面的URL传递给函数,它将返回“ bb65efd50ade4b3591dcf7f4c693042b
” bb65efd50ade4b3591dcf7f4c693042b
function getImageDirectoryByFullURL(url) {
// ... Not sure how to define regexp to delimit on forward slashes,
// or how to start searching from end of string.
}
function getImageDirectoryByFullURL(url){
return url.split('/').pop()
}
//a step by step breakdown
function getImageDirectoryByFullURL(url){
url = url.split('/'); //url = ["serverName","app",...,"bb65efd50ade4b3591dcf7f4c693042b"]
url = url.pop(); //url = "bb65efd50ade4b3591dcf7f4c693042b"
return url; //return "bb65efd50ade4b3591dcf7f4c693042b"
}
这样做是分割每个/
的url并返回一个值数组,但不包括斜杠。 那么,由于split()
返回的是一个数组,我们可以使用pop()
弹出最后一个项目并返回它。
在这种情况下, substr()
可能比split()
更快。 不是100%肯定。
function getImageDirectoryByFullURL(url){
return url.substr(url.lastIndexOf("/")+1);
}
编辑:我忘了,你不需要包含额外的长度参数。 如果没有传递给你,只需要在字符串末尾获得一个substr
,这就是你想要的。 虽然这个解决方案肯定比约瑟夫的答案稍微丑一点,但它在Chrome中的速度是Firefox的两倍,而在Firefox中则快了五倍。
为了使其更加健壮并允许在URL上可能存在尾部斜杠,哈希标记或查询参数:
function getImageDirectoryByFullURL(url){
url = url.replace(/#[^#]+$/, "").replace(/\?[^\?]+$/, "").replace(/\/$/, "");
return url.substr(url.lastIndexOf("/") + 1);
}
一个包含大量测试用例的工作演示: http : //jsfiddle.net/jfriend00/akVVf/
由于没有合理的正则表达式版本,请考虑:
return url.replace(/^.*\//,'');
你也可以尝试这样的东西,得到相同的结果。
function getImageUrl( url){
var result = url.substring(url.lastIndexOf("/") + 1);
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.