2016-01-22 105 views
4

我有這樣的:由第三個實例分割字符串?

var url = "http://www.example.com/level1/level2" 

我想通過字符/在3級分裂的URL。我想:

var array = url.split('/'); 

但輸出是這樣的:

['http:','','www.example.com','level1','level2'] 

我想這樣的:

['http://www.example.com','level1','level2'] 

我想url.split('/')[2],但不起作用。

+3

您不想在第三個實例分割,而是在JavaScript中解析URL。 – kay

+1

我推薦看看[JavaScript - 獲取部分URL路徑](http://stackoverflow.com/q/6944744/218196) –

+0

非常感謝! – Borja

回答

11

爲什麼不分析它正確

var url = "http://www.example.com/level1/level2" 

var a = document.createElement('a'); 

a.href = url; 

a.protocol; // http: 
a.host;  // www.example.com 
a.pathname; // /level1/level2 

var parts = a.pathname.split('/').filter(Boolean); 
parts.unshift(a.protocol + '//' + a.host); // ['http://www.example.com','level1','level2']; 
+0

我問了(非常感謝!) – Borja

0

@adeneo 太謝謝你了!你的答案是非常簡單和乾淨的(我不知道的方法來解析URL),但有一個小錯誤在你的答案......(真小:))

你的輸出是這樣的:

['http://www.example.com','','level1','level2'] 

所以有我的輸出(3級):

var url = "http://www.example.com/level1/level2" 

var a = document.createElement('a'); 

a.href = url; 

a.protocol; // http: 
a.host;  // www.example.com 
a.pathname; // /level1/level2 

var parts = a.pathname.split('/'); 
parts.shift(); // added this line ------------------ 
parts.unshift(a.protocol + '//' + a.host); 

document.write(parts); 

parts.shift();方法unshift()前加入,以這種方式輸出是正確的:

['http://www.example.com','level1','level2'] 

原諒我,如果我被允許再次糾正你:)

如果我錯了,請告訴我:) 謝謝!

+1

沒有注意到,這是因爲URL是'/ level1/level2',所以當在'/'上分割時,在第一個'/'之前有空的條目是空的。解決這個問題的另一種方法是在'pathname'的開始和結尾修剪'/',或者將其過濾出來,然後將其添加到答案中 – adeneo