從URL

2012-06-04 30 views
13

我需要刪除從跨度URL的最後部分刪除最後一個元素..從URL

<span st_url="http://localhost:8888/careers/php-web-developer-2" 
st_title="PHP Web Developer 2" class="st_facebook_large" displaytext="facebook" 
st_processed="yes"></span></span> 

,我需要採取st_url,並從中取出php-web-developer-2所以它只是http://localhost:8888/careers/

但我不知道該怎麼做。 php-web-developer-2並不總是那樣,但它不會有任何/。它將始終是一個-分隔字符串。

任何幫助!! ??

回答

8
$('span').attr('st_url', function(i, url) { 
    var str = url.substr(url.lastIndexOf('/') + 1) + '$'; 
    return url.replace(new RegExp(str), ''); 
}); 

DEMO

+1

PLZ注意,這個解決方案是不通用的。如果URL的最後部分發生在URL的其他地方,則會給出錯誤的結果;例如'http://somewhere.com/test/e'將失敗。 Gisway的答案似乎更好。 – dotNET

+0

這個解決方案有一個非常大的錯誤,因爲如果url是「http:// localhost:8888/careers1/careers」,結果將會是「http:// localhost:8888/1/careers」,第一個''careers''被刪除 – jscripter

+0

你的演示需要一些工作,因爲它沒有演示解決方案。 – mikoop

0

首先,你需要解析的標籤。接下來嘗試提取st_url值,這是您的網址。然後使用從提取的url的最後一個字符開始的循環,並忽略它們,直到看到「/」。這就是你應該如何提取你想要的。記住這一點,並嘗試編寫代碼。

2

你可以看到它在這裏工作:http://jsfiddle.net/xKxLR/

var url = "http://localhost:8888/careers/php-web-developer-2"; 
var regex = new RegExp('/[^/]*$'); 
console.log(url.replace(regex, '/')); 
+0

hm ...我懷疑'*'或'+'...你的版本允許一個空尾「http:// xxx/yyy /」,我的不是,兩者似乎都起作用(在我的,沒有替換執行,我猜) – xtofl

2

你可以使用正則表達式來解析「最後一塊網址中的」:

var url="http://localhost:8888/careers/php-web-developer"; 

var baseurl=url.replace(
    new RegExp("(.*/)[^/]+$"), 
    "$1")); 

正則表達式的事情基本上說:「匹配任何內容,然後斜槓,然後所有非斜槓直到字符串的末尾「。

替換函數使用該匹配部分,並將其替換爲字符串的「任何內容,然後是斜線」部分。

RegexBuddy有很多這方面的信息。

+0

我更喜歡正則表達式。這應該是被接受的答案 – jscripter

9

使用此。

$('span').attr('st_url', function(i, url) { 
    var to = url.lastIndexOf('/') +1; 

    x = url.substring(0,to); 
    alert(x); 
})​ 

你可以看到Demo

+3

如果你想消除尾部的斜線,刪除'+ 1' –

9

如此簡單:

var to = url.lastIndexOf('/'); 
to = to == -1 ? url.length : to + 1; 
url = url.substring(0, to); 
+0

這是更好的工作,因爲如果你有一些單詞與路徑匹配,替換將工作移除第一個匹配 –