Код:
string sURL = "http://subdomain.website.com/index.htm";
MessageBox.Show(new System.Uri(sURL).Host);
дает мне "subdomain.website.com"
Но мне нужен основной домен "website.com" для любого URL-адреса или веб-ссылки.
Как мне это сделать?
Код:
string sURL = "http://subdomain.website.com/index.htm";
MessageBox.Show(new System.Uri(sURL).Host);
дает мне "subdomain.website.com"
Но мне нужен основной домен "website.com" для любого URL-адреса или веб-ссылки.
Как мне это сделать?
Вы можете сделать это, чтобы получить только два последних сегмента имени хоста:
string[] hostParts = new System.Uri(sURL).Host.Split('.');
string domain = String.Join(".", hostParts.Skip(Math.Max(0, hostParts.Length - 2)).Take(2));
Или это:
var host = new System.Uri(sURL).Host;
var domain = host.Substring(host.LastIndexOf('.', host.LastIndexOf('.') - 1) + 1);
Этот метод найдет, по меньшей мере, две части имени домена, но также включает промежуточные части двух символов или меньше:
var host = new System.Uri(sURL).Host;
int index = host.LastIndexOf('.'), last = 3;
while (index > 0 && index >= last - 3)
{
last = index;
index = host.LastIndexOf('.', last - 1);
}
var domain = host.Substring(index + 1);
Это будет обрабатывать домены, такие как localhost
, example.com
и example.co.uk
. Это не лучший метод, но, по крайней мере, это избавляет вас от создания гигантского списка доменов верхнего уровня.
Вы можете попробовать это. Это может обрабатывать многие виды корневого домена, если вы определяете его в массиве.
string sURL = "http://subdomain.website.com/index.htm";
var host = new System.Uri(sURL).Host.ToLower();
string[] col = { ".com", ".cn", ".co.uk"/*all needed domain in lower case*/ };
foreach (string name in col)
{
if (host.EndsWith(name))
{
int idx = host.IndexOf(name);
int sec = host.Substring(0, idx - 1).LastIndexOf('.');
var rootDomain = host.Substring(sec + 1);
}
}
using System.Text.RegularExpressions;
string sURL = "http://subdomain.website.com/index.htm";
string sPattern = @"\w+.com";
// Instantiate the regular expression object.
Regex r = new Regex(sPattern, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(sUrl);
if (m.Success)
{
MessageBox.Show(m.Value);
}