2012-08-16 31 views
0

我想抓住「/」之前的第一組字符,但前後兩個值不斷顯示。我會怎麼做?問題與JavaScript字符串隔離

var str="http://www.youtube.com/fdgfdgfdghgfh"; 
var fileName_image = str; 
var n = fileName_image.substring(fileName_image.lastIndexOf('http://') + 7); 
var f = n.substring(n.charAt('/')); 

我所上述得到的是:www.youtube.com/fdgfdgfdghgfh

什麼,我想獲得是www.youtube.com

+1

那麼你的目標結果是...? – j08691 2012-08-16 20:21:23

+0

@JuanMendes這是一個語法問題。而不是「我想抓住...」你想讓OP問「我怎麼能抓住...?」 – Matt 2012-08-16 20:21:44

+1

@Matt不,它不是,措辭令人困惑,把問題的結構作爲一個問題讓人更容易理解,只是增加了我該怎麼做?沒有幫助 – 2012-08-16 20:22:29

回答

0

變化

var f = n.substring(n.charAt('/')); 

var f = n.split('/')[1]; 

變化[1]〜[0]斜線前得到的東西

替代之前得到的東西/是

var f = n.substring(0,n.indexOf('/')); 
0

所以要返回WWW。 youtube.com?像這樣 - >http://jsfiddle.net/HqSev ???

+0

是的! www.youtube.com是我想要從字符串 – user1596099 2012-08-16 20:27:29

+0

標記中獲得的正確答案! – 2012-08-17 14:27:16

0
var str = "http://www.youtube.com/fdgfdgfdghgfh"; 
var start = "http://".length; 
// Grabs everything after http:// up until the next slash 
str.substring(start, str.indexOf("/", start)); 

我喜歡@ AlexWayne的方法,可能會使用它。但是,這個答案顯示你出錯的地方。

0

您可以替換,如果你正在尋找字符串 「fdgfdgfdghgfh」 的最後一行:

變種F = n.substring(n.lastIndexOf( '/')+ 1);

3

雖然你可以在沒有正則表達式的情況下做到這一點,但這會造成很多緩慢且混亂的代碼。這種字符串處理正好是爲什麼存在正則表達式。所以用'他們'。

// input string 
var str = "http://www.youtube.com/fdgfdgfdghgfh"; 

// matching regex 
// note that forward slashes must be escaped 
// capture text between "http://" (http:\/\/) and the next "/" (\/) 
// use [1] index to retrieve the first captured string (.+?) 
var result = str.match(/^http:\/\/(.+?)\//)[1]; 

// log result 
console.log(result); // "www.youtube.com" 
+0

這個速度並不慢,如果你可以避開它,使用'indexOf'會更快。在這種情況下,這可能不會有什麼區別,所以我會使用RegExp,因爲它稍微更清晰(如果您瞭解RegExps的話)我的答案看起來是否複雜? – 2012-08-16 20:35:53