2013-01-16 14 views
6

İstediğim şekilde bir dizeyi parçalayan birkaç sorun yaşıyorum.IndexOf ve lastIndexOf ile ilgili sorunlar Alt dizede - Dizenin URL'sinin bir kısmını alın

http://SomeAddress.whatever:portWhatever/someDirectory/TARGETME/page.html 

ben regex yerine alt dize ve indexOf kullanarak, ipteki targetme kısmını almaya çalışıyorum: Böyle bir url var. Şu ana ile çalışıyorum fonksiyonudur: Ancak

function lastPartofURL() { 
    // Finding Url of Last Page, to hide Error Login Information 
    var url = window.location; 
    var filename = url.substring(url.lastIndexOf('/')+1); 
    alert(filename); 
} 

, ben bundan döndürür ne nedenle, 'sayfa.html' bölümünü hedef, ama sorun bu yeniden yapılandırma yaşıyorum bu yazdığında şimdi ne yapmak istiyorsam onu ​​yap.

Mümkünse, dizinin başlangıcından ziyade dizinin başlangıcından kaynaklanmasını isterim, çünkü her zaman bir url olmalı ve hedeflemeye çalıştığımdan önce bir dizin olmalıdır, ancak ilgileniyorum her iki çözüm.

İşte benzer bir şey yapan bir düzenli ifade var, ancak güvenli değil (JSLint'e göre) ve bu yüzden daha işlevsel bir şeyle değiştirmeyi düşünmüyorum. Eğer her zaman URL'nin biçimini bilecek demek çünkü sadece bu yöntemi önermek

function getPath() { 
    var url = window.location; 
    var path = url.split("/")[4]; 
    alert(path); 
    return path; 
} 

/^.*\/.*\/TARGETME\/page.html.*/ 

cevap

6

Daha önce .split() ancak (URL "son bölümünden önceki bölüm" dönmek demek varsayarak dava için iyidir, başkaları tarafından cevap örn. http://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.html için "TARGETME" döndürme), sonra sabit numarayı kullanamazsınız, ancak dizinin sonundan önce öğeyi alabilirsiniz:

function BeforeLastPartofURL() { 
    var url = window.location.href; 
    var parts = url.split("/"); 
    var beforeLast = parts[parts.length - 2]; //keep in mind that since array starts with 0, last part is [length - 1] 
    alert(beforeLast); 
    return beforeLast; 
} 
+0

Bu harika! Bu daha sağlam bir çözüm sağlayacaktır. Teşekkürler! – streetlight

2

Sen string.split() ile daha kolay yapabilir ....

+1

Bu harika bir çözüm! Ancak, kabul ettiğiniz gibi, her zaman aynı olan URL'ye bağımlıdır, bu yüzden şu anki kapsamım sınırlıdır. Çok kısa ve özlü şimdi! – streetlight

1
function lastPartofURL() { 
    // Finding Url of Last Page, to hide Error Login Information 
    var url = window.location; 
    var arr = url.split('/'); 

    alert(arr[4]); 
} 

deneyin here

1

bakın bu

function lastPartofURL() { 
    // Finding Url of Last Page, to hide Error Login Information 
    var url = window.location; 
    var sIndex = url.lastIndexOf('/'); 
    var dIndex = url.lastIndexOf('.', sIndex); 
    if (dotIndex == -1) 
    { 
     filename = url.substring(sIndex + 1); 
    } 
    else 
    { 
     filename = url.substring(sIndex + 1, dIndex); 
    } 

    alert(filename); 
}