从URL获取主机域?
如何从一个stringURL获得主机域?
GetDomain有1个input“URL”,1个输出“域”
例1
INPUT: http://support.domain.com/default.aspx?id=12345 OUTPUT: support.domain.com
例题
INPUT: http://www.domain.com/default.aspx?id=12345 OUTPUT: www.domain.com
示例3
INPUT: http://localhost/default.aspx?id=12345 OUTPUT: localhost
您可以使用Request
对象或Uri
对象来获取url的主机。
使用Request.Url
string host = Request.Url.Host;
使用Uri
Uri myUri = new Uri("http://www.contoso.com:8080/"); string host = myUri.Host; // host is "www.contoso.com"
使用Uri类并使用Host属性
Uri url = new Uri(@"http://support.domain.com/default.aspx?id=12345"); Console.WriteLine(url.Host);
像这样尝试;
Uri.GetLeftPart( UriPartial.Authority )
定义Uri.GetLeftPart方法的URI部分。
http://www.contoso.com/index.htm?date=today – > http://www.contoso.com
http://www.contoso.com/index.htm#main – > http://www.contoso.com
nntp://news.contoso.com/123456@contoso.com – > nntp://news.contoso.com
file://server/filename.ext – > file:// server
Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search"); Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));
Demo
尝试下面的声明
Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri); string pathQuery = myuri.PathAndQuery; string hostName = myuri.ToString().Replace(pathQuery , "");
例1
Input : http://localhost:4366/Default.aspx?id=notlogin Ouput : http://localhost:4366
例题
Input : http://support.domain.com/default.aspx?id=12345 Output: support.domain.com
最好的方法,正确的方法是使用Uri.Authority
字段
加载和使用Uri像这样:
Uri NewUri; if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri)) { Console.Writeline(NewUri.Authority); } Input : http://support.domain.com/default.aspx?id=12345 Output : support.domain.com Input : http://www.domain.com/default.aspx?id=12345 output : www.domain.com Input : http://localhost/default.aspx?id=12345 Output : localhost
如果你想操纵Url,使用Uri对象是做这件事的好方法。 https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx
尝试这个
Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));
它会输出support.domain.com
或者试试
Uri.GetLeftPart( UriPartial.Authority )
你应该构造你的string作为URI对象和Authority属性返回你所需要的。
WWW是一个别名,所以如果你想要一个域,你不需要它。 这是我的litllte函数从string获取真正的域
private string GetDomain(string url) { string[] split = url.Split('.'); if (split.Length > 2) return split[split.Length - 2] + "." + split[split.Length - 1]; else return url; }