2016-12-13 3 views
1

Я пытаюсь получить последнюю часть URL:Получить последнюю часть URL с/в конце

http://webserver/Foo/login/ 

код, который я написал:

var location = window.location.href.split('/').pop(); 

вернет пустой строка "после / ничего. Мне нужно получить хотя бы предыдущую часть, поэтому в этом случае войдите.

Как я могу это сделать?

+1

Попробуйте '.pop(). Pop()' Но в идеале не разбирайте строку с символом '/' в конце. – Jack

+0

^Не реализовано Magnitude на StackOverflow. – Santi

+0

@Jack Вы не можете связать '.pop()', первый возвращает строку. –

ответ

2

Решение с использованием String.replace() (используется для замены можно / в конце строки) и String.split() функции:

var url = 'http://webserver/Foo/login/', 
 
    last_section = url.replace(/\/+$/, '').split('/').pop(); 
 
    
 
console.log(last_section);

+0

это будет работать для malformatted url, например login /////? – AgainMe

+1

@AgainMe, с моим последним правлением ('/ \/+ $ /') - да, это сработает. Попробуйте, и вы увидите – RomanPerekhrest

+0

, это действительно замечательное решение – AgainMe

1

const getLastPartURL = url => { 
 
    const parts = url.split('/'); 
 
    const length = parts.length; 
 
    return parts[length - 1] == '' ? parts[length - 2] : parts[length - 1] 
 
} 
 

 
console.log(getLastPartURL('http://webserver/Foo/login/')) 
 
console.log(getLastPartURL('http://webserver/Foo/login')) 
 
console.log(getLastPartURL('http://webserver/Foo/')) 
 
console.log(getLastPartURL('http://webserver/Foo'))

0

Это должно сделать Хитрость:

location.pathname.match(/[^/]*(?=\/*$)/)[0] 

Пояснение:

Пример:

Для всех этих URL-адресов выход является login:

  • http://webserver/Foo/login
  • http://webserver/Foo/login/
  • http://webserver/Foo/login//