c# - que - Obtención del nombre de dominio exacto de cualquier URL
que es un sitio web (5)
Otra variante, sin dependencias:
string GetDomainPart(string url)
{
var doubleSlashesIndex = url.IndexOf("://");
var start = doubleSlashesIndex != -1 ? doubleSlashesIndex + "://".Length : 0;
var end = url.IndexOf("/", start);
if (end == -1)
end = url.Length;
string trimmed = url.Substring(start, end - start);
if (trimmed.StartsWith("www."))
trimmed = trimmed.Substring("www.".Length );
return trimmed;
}
Ejemplos:
http://www.google.com → google.com
http://www.google.co.uk/path1/path2 → google.co.uk
http://localhost.intranet:88/path1/path2 → localhost.intranet:88
http://www2.google.com → www2.google.com
Esta pregunta ya tiene una respuesta aquí:
- Obtener el dominio del host de la URL? 8 respuestas
Necesito extraer el nombre de dominio exacto de cualquier URL.
Por ejemplo,
Url: http://www.google.com -> Dominio: google.com
Url: http://www.google.co.uk/path1/path2 -> Dominio: google.co.uk
¿Cómo puede esto ser posible en c #? ¿Hay una lista completa de TLD o un analizador para esa tarea?
Prueba la clase System.Uri.
http://msdn.microsoft.com/en-us/library/system.uri.aspx
new Uri("http://www.google.co.uk/path1/path2").Host
que devuelve "www.google.co.uk". A partir de ahí es la manipulación de cuerdas. : /
Puede usar la Clase Uri para acceder a todos los componentes de un URI:
var uri = new Uri("http://www.google.co.uk/path1/path2");
var host = uri.Host;
// host == "www.google.co.uk"
Sin embargo, no hay una forma integrada de eliminar el subdominio "www" de "www.google.co.uk". Necesitas implementar tu propia lógica, por ejemplo
var parts = host.ToLowerInvariant().Split(''.'');
if (parts.Length >= 3 &&
parts[parts.Length - 1] == "uk" &&
parts[parts.Length - 2] == "co")
{
var result = parts[parts.Length - 3] + ".co.uk";
// result == "google.co.uk"
}
Utilizar:
new Uri("http://www..com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer").GetLeftPart(UriPartial.Authority).Replace("/www.", "/").Replace("http://", ""));
Entrada:
http://www..com/questions/5984361/c-sharp-getting-exact-domain-name-from-any-url?s=45faab89-43eb-41dc-aa5b-8a93f2eaeb74#new-answer
Salida:
.com
También funciona para lo siguiente.
http://www.google.com → google.com
http://www.google.co.uk/path1/path2 → google.co.uk
http://localhost.intranet:88/path1/path2 → localhost.intranet: 88
http://www2.google.com → www2.google.com
utilizar:
var uri =new Uri(Request.RawUrl); // to get the url from request or replace by your own
var domain = uri.GetLeftPart( UriPartial.Authority );
Entrada:
Url = http://google.com/?search=true&q=how+to+use+google
Resultado:
domain = google.com