2013-04-26 6 views
6

Je dois obtenir la dernière partie de l'URI en cours avec Javascript, comme pourObtenez dernière partie URI

www.example.com/apple/beer/cucumber

il devrait revenir

concombre

ou

www.example.com/apple/beer/

il doit retourner

bière

je suis venu avec le code suivant:

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

Peut-il s'agir de elle améliorée? Si ce n'est pas le cas, peut-être que ce post aidera les autres à essayer de trouver une solution au même problème.

Solution

Merci à tous, cela semble la solution la plus courte (si tout va mieux):

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

Ce n'est pas un double de la question, il a été marqué comme duplicata de. C'est une demande plus spécifique et légitime (j'en ai moi-même eu besoin - obtenir le chemin est une chose, obtenir la dernière partie en est une autre). – acdcjunior

Répondre

7

C'est un peu plus court, mais votre solution est certainement une bonne.

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

Ou, comme PSR dit, vous pouvez utiliser substr:

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

voir j'ai mis à jour ma réponse – PSR

+1

vous mis à jour le mien :) –

+1

Désolé Par erreur, j'ai mis à jour votre code.S'il vous plaît corriger votre code – PSR

1

Vous pouvez utiliser

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

ne reviendra pas juste le dernier caractère? – Gareth

+0

@Gareth Nope, 'substr' renvoie une plage de caractères. Dans ce cas, seul le point de départ a été fourni, donc il renvoie la sous-chaîne de là à la fin – Ian

+1

@Ian Right, mais quand j'ai quitté ce commentaire, la réponse était 'url.slice (-1)' - il était alors ninja - édité dans la période de grâce de 5 minutes SO vous donne avant de dire à tout le monde que vous avez édité;) – Gareth

-1

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

C'est essentiellement dire prendre tous les caractères qui aren 't une entaille de la fin du chemin, et retourne cette séquence.

9

Malheureusement, aucune des réponses à ce jour ne fonctionne sur les URL avec une fin / comme votre exemple de www.example.com/apple/beer/.
est ici une solution qui fonctionne également dans ce cas:

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

jsFiddle Testcase: http://jsfiddle.net/EMK6t/

+0

Ouais, tu as raison. Je ferais 'si le dernier caractère est une barre oblique, supprimez-le', mais cet extrait est sûrement mieux. – keeri

+0

Parfait. On dirait que presque personne ne tient compte des URL qui se terminent par une barre oblique. Bel extrait! –

+0

Génial ....... :) –