我有一个类似以下的URL
http://yellowcpd.testpace.net
我怎样才能从这个中获取yellowcpd呢?我知道可以使用字符串解析来实现,但是在C#中是否有内置的方法呢?
我有一个类似以下的URL
http://yellowcpd.testpace.net
我怎样才能从这个中获取yellowcpd呢?我知道可以使用字符串解析来实现,但是在C#中是否有内置的方法呢?
testpace.net
,请尝试以下操作:var subdomain = Request.Url.Host.Replace("testpace.net", "").TrimEnd('.');
这只会返回 Host 中不包含 testpace.net
的部分。如果你没有 Request.Url.Host
,可以使用 new Uri(myString).Host
。
试一下这个
string url = Request.Url.AbsolutePath;
var myvalues= url.Split('.');
Request.Url.Host
而不是 Request.Url.AbsolutePath
,因为后者会给你返回域名之后的所有内容。 - QFDevstring rawURL = Request.Url.Host;
string domainName = rawURL .Split(new char[] { '.', '.' })[1];
或者超过一个:
string rawURL = Request.Url.Host.Split(new char[] { '.', '.' })[1];
简单地回答你的问题,没有内置的方法可以仅提取子域名。虽然如此,这是我使用的解决方案...
public enum GetSubDomainOption
{
ExcludeWWW,
IncludeWWW
};
public static class Extentions
{
public static string GetSubDomain(this Uri uri,
GetSubDomainOption getSubDomainOption = GetSubDomainOption.IncludeWWW)
{
var subdomain = new StringBuilder();
for (var i = 0; i < uri.Host.Split(new char[]{'.'}).Length - 2; i++)
{
//Ignore any www values of ExcludeWWW option is set
if(getSubDomainOption == GetSubDomainOption.ExcludeWWW && uri.Host.Split(new char[]{'.'})[i].ToLowerInvariant() == "www") continue;
//I use a ternary operator here...this could easily be converted to an if/else if you are of the ternary operators are evil crowd
subdomain.Append((i < uri.Host.Split(new char[]{'.'}).Length - 3 &&
uri.Host.Split(new char[]{'.'})[i+1].ToLowerInvariant() != "www") ?
uri.Host.Split(new char[]{'.'})[i] + "." :
uri.Host.Split(new char[]{'.'})[i]);
}
return subdomain.ToString();
}
}
用法:
var subDomain = Request.Url.GetSubDomain(GetSubDomainOption.ExcludeWWW);
或者
var subDomain = Request.Url.GetSubDomain();
我目前将默认设置为包括WWW。您可以通过在GetSubDomain()
方法中切换可选参数值来轻松地反转此操作。
我认为这样可以提供一个选项,代码看起来很好,而且似乎是C#内置的。只是为了确认您的期望......我测试了三个值,如果使用排除标志,此方法将始终仅返回“yellowcpd”。
我使用的一个假设是......在.
上分割主机名将始终导致最后两个值成为域(即something.com)
var req = new HttpRequest(filename: "search", url: "http://www.yellowcpd.testpace.net", queryString: "q=alaska");
var host = req.Url.Host;
var yellow = host.Split('.')[1];
yellowcpd.yellowcpd.testpace.net
,那么结果会是什么? - Soner Gönülwww
是你的例子中的第一个。请具体说明!你是指第一个非www
部分吗? - allonhadaya