J'ai besoin d'analyser le nom de domaine à partir d'une chaîne. La chaîne peut varier et j'ai besoin du domaine exact.
Exemples de chaînes: P>
www.somename.de
4 Réponses :
J'ai vérifié Library d'expression régulière , et on dirait quelque chose comme Cela pourrait fonctionner pour vous:
^(([\w][\w\-\.]*)\.)?([\w][\w\-]+)(\.([\w][\w\.]*))?$
@Umair Ashraf - Vous devriez probablement expliquer comment cela ne fonctionne pas. Pouvez-vous donner un exemple de ligne qui ne correspond pas?
J'ai droit, j'ai mis cette ligne dans Regex Connstructor comme (@ "^ ((([\ w] [\ w \ - \.] *) \.)? ([\ W \ -] +) (\. ( [\ w] [\ w \.] *))? $ ")
Essayez ceci:
string url = "http://www.google.com/hello"; Match match = Regex.Match(url, @"^(?:\w+://)?([^/?]*)"); string domain = match.Groups[1].Value;
Autre alternative à une solution de regex, vous pouvez laisser la classe string uriString = "http://www.google.com/search";
if (!uriString.Contains(Uri.SchemeDelimiter))
{
uriString = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriString);
}
string domain = new Uri(uriString).Host;
Vos réponses sont également valables.
@AbDUnBaboor, que vous attendriez-vous? L'URL contient un nom d'hôte avec un espace de travail ("BLABLA") qui en fait un nom d'hôte non valide. Juste le "http: //" est également une URL invalide. Le constructeur URI code> s'attend à une URL valide.
1. Il dit l'URL valide si je retire l'espace. 2. J'ai essayé avec seulement Blabla, il est toujours dit que c'est une URL valide. Je pense que ça ne devrait pas.
i simple utilisé car en utilisant cela, vous pouvez sûr. p> p>
Vous ne pouvez pas être si sûr que votre solution accepte également "H t t p: / / h t t p: / / yee" comme une URL correcte (sans espaces, mais Stackoverflow change le double http: // en une ...
Hey merci de l'avoir plus clair