6

我有以下形式的网址:

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

serverName服务器的域名在哪里。

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

function getImageDirectoryByFullURL(url) {
    // ... Not sure how to define regexp to delimit on forward slashes,
    // or how to start searching from end of string.
}
4

5 回答 5

13

用斜线分割/,弹出最后一个并返回它

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()弹出最后一项并返回它。

于 2012-04-24T00:59:47.370 回答
5

在这种情况下,substr() 可能split(). 不是100%确定。

function getImageDirectoryByFullURL(url){
    return url.substr(url.lastIndexOf("/")+1);
}

编辑:我忘了,你不需要包含额外的长度参数。如果不传递它,您只需将 asubstr放在字符串的末尾,这是所需要的。虽然这个解决方案无疑比约瑟夫的答案有点丑,但它在 Chrome 中的速度是 Chrome 的两倍,在 Firefox 中的速度是它的五倍。

于 2012-04-24T01:01:25.903 回答
3

为了使它更健壮一点,并允许在 URL 上可能存在尾部斜杠、哈希标签或查询参数:

function getImageDirectoryByFullURL(url){
    url = url.replace(/#[^#]+$/, "").replace(/\?[^\?]+$/, "").replace(/\/$/, "");
    return url.substr(url.lastIndexOf("/") + 1);
}

还有一个带有一堆测试用例的工作演示:http: //jsfiddle.net/jfriend00/akVVf/

于 2012-04-24T01:37:24.053 回答
1

由于没有合理的正则表达式版本,请考虑:

return url.replace(/^.*\//,'');
于 2012-04-24T04:02:08.277 回答
0

你也可以尝试这样的事情,得到相同的结果。

function getImageUrl( url){
    var result = url.substring(url.lastIndexOf("/") + 1);
    return result;
}
于 2012-04-24T01:10:02.557 回答