2013-01-16 18 views
6

我遇到了幾個問題,以我想要的方式拆分字符串。我有這樣一個網址:子字符串indexOf和lastIndexOf的問題 - 從字符串獲取URL的一部分

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

我試圖讓弦上TARGETME部分,使用代替正則表達式的子串和的indexOf。這是我與現在工作的功能:

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); 
} 

然而,當我寫了這個,我瞄準「page.html中」的一部分,所以這是它返回,但我無法重新配置這做我現在想做的事。

如果可能的話,我希望它起源於字符串的開頭而不是結尾,因爲在我試圖定位之前應該總是有一個url然後是一個目錄,但是我對兩種解決方案

這是一個類似的正則表達式,但它不安全(根據JSLint),因此我不介意用更實用的東西替換它。

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

回答

6

正如已經被別人回答,.split()有利於你的情況不過假設你指的是URL的「最後之前的部分」返回(例如,爲http://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.html也返回「TARGETME」),那麼您不能使用固定數字,而應在數組的最後一個項目之前使用該項目:

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

這太棒了!這將會提供更強大的解決方案。謝謝! – streetlight

2

你可以用string.split()做很容易...

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

既然你說你將永遠知道網址的格式,我只建議這種方法。

+1

這是一個很棒的解決方案!但是,就像你承認的那樣,它依賴於url總是相同的,所以它現在只限於我的範圍。非常簡短,現在簡潔! – 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]); 
} 

here

1

試試這個

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); 
}