www.somedomain.com є доменом / хостом. Субдомен є важливою частиною. www.часто використовується взаємозамінно з відсутністю, але це має бути встановлено як правило (навіть якщо воно встановлено за замовчуванням), оскільки вони не є рівнозначними. Подумайте про інший субдомен, наприклад mx.. Це, мабуть, має іншу ціль, ніж www..
Враховуючи це, я б радив не робити подібних речей. Тим не менш, оскільки ви запитуєте, я думаю, у вас є поважна причина.
Особисто я б запропонував спеціальний корпус www.для цього.
string host = HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);;
if (host.StartsWith("www."))
return host.Substring(4);
else
return host;
В іншому випадку, якщо ви дійсно на 100% впевнені, що хочете відрубати будь-який субдомен, вам знадобиться щось трохи складніше.
string host = ...;
int lastDot = host.LastIndexOf('.');
int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.');
if (secondToLastDot > -1)
return host.Substring(secondToLastDot + 1);
else
return host;
Отримати порт так само, як казали інші люди.