6

次の形式の URL があります。

サーバー名/アプリ/画像/サムネイル/2012/4/23/1335228884300/bb65efd50ade4b3591dcf7f4c693042b

serverNameサーバーのドメイン名はどこにありますか。

これらの URL の 1 つを受け取り、最後 (一番右) のスラッシュで区切られた文字列を返す 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);
}

編集:忘れましたが、余分な長さパラメーターを含める必要はありません。それを渡さずsubstrに、文字列の最後に a を取得するだけです。これは望ましいことです。このソリューションは確かにジョセフの答えよりも少し醜いですが、Chrome では 2 倍、Firefox では 5 倍ほど高速です。

于 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 に答える