2012-07-26 73 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

相关问题