Comment vérifier qu'une chaîne uri est valide

Comment vérifiez-vous que l'uri de la chaîne est valide (que vous pouvez nourrir à l'Uri constructeur)?

Jusqu'à présent je n'ai que le suivant, mais pour des raisons évidentes, je préfère un moins brute façon:

    Boolean IsValidUri(String uri)
    {
        try
        {
            new Uri(uri);
            return true;
        }
        catch
        {
            return false;
        }
    }

J'ai essayé d'Uri.IsWellFormedUriString mais il ne semble pas comme tout ce que vous pouvez jeter à l'constructeur. Par exemple:

String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));

La sortie sera:

Uri.IsWellFormedUriString says: False
IsValidUri says: True

Mise À Jour/Répondre

L'Uri constructeur utilise genre Absolue par défaut. C'était à l'origine un écart lorsque j'ai essayé d'utiliser l'Uri.TryCreate et le constructeur. Vous n'obtenez pas les résultats escomptés, si vous faites correspondre le UriKind pour le constructeur et TryCreate.

  • Bonne fonction que vous avez fait! +1
  • N'ajoutez pas une réponse comme une modification à la question. Si on ajoute quelque chose à la les réponses existantes, l'ajouter comme une réponse distincte. Merci de modifier la réponse de votre question.
  • double possible de Comment faire pour vérifier si une chaîne est une URL?
  • Un double d'une question posée 9 mois après celui-ci? Fait sens total.
  • Duplicata peut signifier 2 choses: 1/. Un manque de recherche de l'op. C'est clairement pas le cas ici! Vous question est bien écrit.
  • 2/. Ou il pourrait être à la tête des nouvelles de l'utilisateur sur le droit chemin vers une meilleure réponse. Ce n'est pas l'âge, même pas sur la question. Le double pourrait être une faible qualité. Ps: j'ai pas de juger de la qualité de réponse ni la question ici.

InformationsquelleAutor Manuel | 2011-01-29