繁体   English   中英

如何在Javascript中提取URL的结尾?

[英]How to extract end of URL in Javascript?

我在表单中有以下网址:

服务器名/应用程序/图像/缩略图/ 2012/4 /1335228884300分之23/ bb65efd50ade4b3591dcf7f4c693042b

其中serverName是服务器的域名。

我想编写一个接受其中一个URL的JS函数,并返回最后一个(最右边)正斜杠分隔的字符串。 因此,如果上面的URL传递给函数,它将返回“ bb65efd50ade4b3591dcf7f4c693042bbb65efd50ade4b3591dcf7f4c693042b

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM