77 votes

ajouter un protocole à l'url si nécessaire

Pour créer une Uri à partir d'une chaîne vous pouvez faire ceci:

Uri u = new Uri("mydomain.com");

Mais le problème est que si la chaîne de caractères (comme celle ci-dessus) ne contient pas le protocole, vous obtiendrez une exception: "Invalid URI: The format of the URI could not be determined."

Pour éviter l'exception que vous devez sécuriser la chaîne comprend un protocole, comme ci-dessous:

Uri u = new Uri("http://mydomain.com");

Mais si vous prenez l'url d'entrée, comment pouvez-vous ajouter le protocole s'il est absent?
Je veux dire, en dehors de certains IndexOf/sous-Chaîne de la manipulation?

Quelque chose d'élégant et rapide?

144voto

as-cii Points 7028

Vous pouvez également utiliser UriBuilder:

public static Uri GetUri(this string s)
{
    return new UriBuilder(s).Uri;
}

Remarques à partir de MSDN:

Ce constructeur initialise une nouvelle instance de la UriBuilder de classe avec le Fragment, d'Accueil, de Chemin, de Port, de Requête, d'un programme, et Uri propriétés définies comme indiqué dans l'uri.

Si l'uri ne spécifiez pas un régime, le régime par défaut "http:".

4voto

John Points 640

Ma solution a été de protocall-moins url pour s'assurer que ce protocole a été regex :

Regex.Replace(s, @"^\/\/", "http://");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X