2012-07-26 126 views
0

可能重複:
Remove everything after a certain character的JavaScript找到字符串,刪除以下所有字符

如果我有

var shot = www.site.com/ask 

,我想以後刪除所有字符「 /「 (包含 」/」)。 這樣的結果將是

www.site.com 

注:拍攝動態變化值 ,這將所有的JavaScript來完成。

+1

請發表您曾嘗試過的至今。你有沒有搜索過你的問題的答案? – 2012-07-26 11:35:59

+0

[你有什麼試過](http://whathaveyoutried.com)? – Bergi 2012-07-26 11:38:36

+0

正在拍攝你當前的網址?如果是這樣,你可以使用'window.location.host'。 – 2012-07-26 11:39:27

回答

1

假設你想要的/之前,你可以找到一個字符的索引,並返回之前的子一切後,將刪除一切:

var shot = "www.site.com/ask"; 
var index = shot.indexOf("/"); 
var result; 
if (index < 0) { 
    result = shot; 
} else { 
    result = shot.substr(0, index); 
} 
// result = "www.site.com" 

如果您想要從包含協議的字符串獲取域,例如http://www.site.com/ask並得到www.site.com那麼你需要包含額外的邏輯,因爲上面的代碼將返回http:

+2

如果沒有「/」,我們稱之爲「意外結果」? – Bergi 2012-07-26 11:37:34

+0

非常感謝你@Smirkin黃瓜它效果不錯:) – 2012-07-26 11:41:30

+0

@Bergi,很好的地方。包含額外的邏輯以確保有斜線。 – detaylor 2012-07-26 11:48:50

0

這裏有一個正則表達式的第一個斜槓

var shot = 'www.site.com/ask'; 
shot.replace(/\/.+/, ''); 
1
var shot = 'www.site.com/ask'; 
var site = shot.replace(/\/.*$/,''); 

site現在將包含www.site.com

2
'www.site.com/ask'.split('/', 1)[0]; // => www.site.com 
1

試試這個:

/^(.*?)\//.exec(shot)[1] 

或:

shot.match(/^[^\/]*/)[0] 
1

你可以讓做解析的瀏覽器你:

var a = document.createElement("a"); 
a.href = "http://" + "www.site.com/ask"; 
alert(a.hostname); 
//"www.site.com" 
+0

有趣的方法 – 2012-07-26 11:40:27

1

最簡單的非正則表達式的方法是

shot = shot.substr(0, shot.indexOf('/')); 

但這並不佔存在介於http://或相似。爲此,你需要一個正則表達式。

shot = shot.replace(/([^\/])\/([^\/].*)?$/, '$1'); 
+0

正則表達式也不起作用。至少,我認爲這個意圖是爲了「http://www.site.com/ask」最終成爲'「http://www.site.com」',但是替換返回'「http:」 '。 – nnnnnn 2012-07-26 12:05:38

+0

兩人都有錯別字......第一個錯過了第一個參數,第二個錯誤現在也被修正了。 – 2012-07-26 12:22:42

相關問題