C# 从URL获取主机域?
如何从字符串URL获取主机域 GetDomain有1个输入“URL”,1个输出“域” 例1C# 从URL获取主机域?,c#,string,url,httpwebrequest,uri,C#,String,Url,Httpwebrequest,Uri,如何从字符串URL获取主机域 GetDomain有1个输入“URL”,1个输出“域” 例1 INPUT: http://support.domain.com/default.aspx?id=12345 OUTPUT: support.domain.com Input : http://localhost:4366/Default.aspx?id=notlogin Ouput : http://localhost:4366 例2 INPUT: http://www.domain.com/d
INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com
Input : http://localhost:4366/Default.aspx?id=notlogin
Ouput : http://localhost:4366
例2
INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com
Input : http://support.domain.com/default.aspx?id=12345
Output: support.domain.com
例3
INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
您可以使用
Request
对象或Uri
对象来获取url的主机
使用
使用
试试这个
Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));
它将输出support.domain.com
或尝试
Uri.GetLeftPart( UriPartial.Authority )
使用类和使用属性
像这样尝试
Uri.GetLeftPart( UriPartial.Authority )
定义URI.GetLeftPart方法的URI部分
--> --> nntp://news.contoso.com/123456@contoso.com-->nntp://news.contoso.com file://server/filename.ext --> file://server
您应该将字符串构造为对象,属性返回您需要的内容 试试下面的语句
Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
string pathQuery = myuri.PathAndQuery;
string hostName = myuri.ToString().Replace(pathQuery , "");
例1
INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com
Input : http://localhost:4366/Default.aspx?id=notlogin
Ouput : http://localhost:4366
例2
INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com
Input : http://support.domain.com/default.aspx?id=12345
Output: support.domain.com
WWW是一个别名,所以如果您想要一个域,就不需要它。 下面是我的litllte函数,用于从字符串中获取实际域
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;
}
最好的方法,也是正确的方法是使用
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://stackoverflow.com/questions/";
输出=”https://stackoverflow.com/"; 您好,我想使用Request.Url,但Visual Studio仍然返回无法解析符号“Request”。我不知道怎么了。我使用VisualStudio2010和NetFramework4.0。有人能解释这个症状吗?谢谢,您需要在网页/服务中提供请求对象,但默认情况下不在其后面。如果您没有可用的请求对象,则可以使用Uri类如果myuri.PathAndQuery为“/”则无法工作它只是将“/”替换为“”,问题似乎是URL中的主机,而不是主机的域,除非我完全误解了“主机域”(而不仅仅是“主机”)。事实上,答案与Uri.Host一致,这是一种支持,即应该更新问题,以便更好地反映问题和公认答案中所需的示例,并与之保持一致。
var url = Regex.Match(url, @"(http:|https:)\/\/(.*?)\/");