2014-01-28 218 views
3

我試圖替換最後一個斜槓一系列URL字符串,來交換正斜槓爲一個數字符號,就像這樣 -字符串替換最後一個斜槓與其它字符

http://example.com/about/our-company 

http://example.com/about#our-company 

在jQuery中使用JS我曾嘗試在每個字符串上應用替換函數,但不知道如何定位最後一個正斜槓。

$('.submenu a').each(function() { 
    var url = $(this).attr('href'); 
    url = url.replace(/\//g, '#'); 
    console.log(url); 
    // replaces all 
}); 

回答

5

試試這個:

var str = "http://one/two/three/four"; 
console.log(str.replace(/\/(?=[^\/]*$)/, '#')); 

,上面寫着:「代替後跟存在或是不包括另一斜槓,對末端字符斜槓」

+0

感謝Utkanos!除了我意識到所有的網址都是以最後一個斜線生成的...... doh!假設情況總是如此,是否有類似的方法來定位_second_最後一個正斜槓?我應該用另一種方式來做這件事,我知道。 –

+0

並非沒有使模式複雜化。最簡單的方法是首先去掉尾部的斜線(以後總是可以加回去)。所以:'var str =「http:// one/two/three/four /」.replace(/ \/$ /,'');' – Utkanos

+0

確實,這可能是最平滑的選項。再次感謝。 –

1
$('.submenu a').each(function() { 
    var url = $(this).attr('href'); 
    var idx = url.lastIndexOf("/"); 
    url = url.substring(0, idx) + '#' + url.substring(idx+1); 
    console.log(url); 
}); 
1

一個簡單的辦法:

var str="http://example.com/about/our-company"; 
var tmp=str.split("").reverse().join(""); 
tmp=tmp.replace("/","#"); 
str=tmp.split("").reverse().join(""); 

//output: 

str = http://example.com/about#our-company 
2

您可以根據/試圖分裂網址:

url = 'http://example.com/about/our-company'; 
tokens = url.split('/'); 
expected_url = tokens.slice(0, tokens.length-1).join('/') + '#' + tokens[tokens.length-1]; 

console.log(expected_url); 
# Prints 'http://example.com/about#our-company' 
相關問題