2013-05-25 10 views
15

Próbuję usunąć ostatnią część katalogu adresu URL. Mój adres URL wygląda następująco:usuń ostatni katalog z adresu URL

https://my_ip_address:port/site.php?path=/path/to/my/folder.

Po kliknięciu na przycisku, chcę zmienić na

https://my_ip_address:port/site.php?path=/path/to/my. (Usuń ostatnią część).

Próbowałem już window.location.replace(/\/[A-Za-z0-9%]+$/, ""), co skutkuje

https://my_ip_address:port/undefined.

Do czego Regex powinienem użyć?

+1

Można również dodać '/../'. LOL tylko żartuje, oto [real deal] (http://regex101.com/r/nZ4jU4) – HamZa

+1

@HamZaDzCyberDeV Ignoruję '.' na ścieżce, aby uniknąć zastrzyku. Ale dzięki za twój link! – pascalhein

+0

@HamZaDzCyberDeV Jakoś nie rozumiem, jak używać 'replace':' window.location.replace (/(.*)\/.*/, "\ 1"); 'powoduje, że' https: // my_ip_address: port /(.*)\/.*/ ' – pascalhein

Odpowiedz

22

Objaśnienie: Rozstrzel przez "/", usuń ostatni element za pomocą popu, dołącz ponownie za pomocą "/".

function RemoveLastDirectoryPartOf(the_url) 
{ 
    var the_arr = the_url.split('/'); 
    the_arr.pop(); 
    return(the_arr.join('/')); 
} 

zobaczyć Fiddle http://jsfiddle.net/GWr7U/

+0

dzięki, że działa – pascalhein

+0

@ csharpler cieszę się, że pomogę :) – Sharky

5

uzyskać przy użyciu tego kodu, usuwa ostatni element z linku URL.

string url = Request.Url.ToString(); 
      string removelastdir = url.Substring(0, url.LastIndexOf('/')); 
+0

To działa dla C#, ale nie dla Javascript. – Dykotomee

+2

dla js: string removelastdir = url.substring (0, url.lastIndexOf ('/')); – SanR