OVH Cloud OVH Cloud

Vérifier qu'un string est une url

9 réponses
Avatar
Sébstien
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un fichier
.csv duquel j'extrait des données. Je voudrais vérifier que l'un des strings
que j'extrait est bien une url - cad pr mon prog : chemin d'accès d'un
fichier (qu'elle soit valide ou non) : existe t-il une méthode vérifiant
qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu bourrin.

Merci par avance

Sébastien

9 réponses

Avatar
nicolas franchet
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un fichier
.csv duquel j'extrait des données. Je voudrais vérifier que l'un des strings
que j'extrait est bien une url - cad pr mon prog : chemin d'accès d'un
fichier (qu'elle soit valide ou non) : existe t-il une méthode vérifiant
qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu bourrin.

Merci par avance

Sébastien


Avatar
Sébstien
bon alors je vais rester la dessus :-)
merci de votre réponse.
Sébastien

"nicolas franchet" a écrit :

Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
> Bonjour,
>
> Je fais actuellement un prog en C# (windows application). J'ai un fichier
> .csv duquel j'extrait des données. Je voudrais vérifier que l'un des strings
> que j'extrait est bien une url - cad pr mon prog : chemin d'accès d'un
> fichier (qu'elle soit valide ou non) : existe t-il une méthode vérifiant
> qu'un string contient une url ?
>
> J'ai essayé de faire :
> Uri test = new Uri(mon_string);
>
> mais comme je me doutais ca fait planter mon prog.
> la solution serait de faire un try{} catch{} mais je trouve ça un peu bourrin.
>
> Merci par avance
>
> Sébastien



Avatar
Fabien Bezagu
Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper" l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye de
créer une uri à partir d'une chaîne et si, exceptionnellement, la chaîne
n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le message
de news: dbqoa0$qp$
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un fichier
.csv duquel j'extrait des données. Je voudrais vérifier que l'un des
strings que j'extrait est bien une url - cad pr mon prog : chemin d'accès
d'un fichier (qu'elle soit valide ou non) : existe t-il une méthode
vérifiant qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu
bourrin.

Merci par avance

Sébastien




Avatar
Sébstien
oui vous avez probablement raison
C'est comme ca que j'ai fait finalement.
Mais je pensais qu'il existait une méthode qui pouvait tester genre : IsUrl
ou IsValidUrl
Merci pour vos réponses
Sébastien

"Fabien Bezagu" a écrit :

Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper" l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye de
créer une uri à partir d'une chaîne et si, exceptionnellement, la chaîne
n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le message
de news: dbqoa0$qp$
> Une autre solution serait de passer par les expressions regulieres,
> mais personellement la methode "bourrin" me semble mieux.
>
> Nicolas
>
>
> Sébstien wrote:
>> Bonjour,
>>
>> Je fais actuellement un prog en C# (windows application). J'ai un fichier
>> .csv duquel j'extrait des données. Je voudrais vérifier que l'un des
>> strings que j'extrait est bien une url - cad pr mon prog : chemin d'accès
>> d'un fichier (qu'elle soit valide ou non) : existe t-il une méthode
>> vérifiant qu'un string contient une url ?
>>
>> J'ai essayé de faire :
>> Uri test = new Uri(mon_string);
>>
>> mais comme je me doutais ca fait planter mon prog.
>> la solution serait de faire un try{} catch{} mais je trouve ça un peu
>> bourrin.
>>
>> Merci par avance
>>
>> Sébastien





Avatar
Simon Mourier
Il y a une différence fondamentale entre tous les TryXXX de Framework 2.0 et
le fait de faire un try/catch: la performance.

En effet, une levée d'exception + catch coute des milliers de cycles
processeur. Dans un cas de "vraie" erreur, ca ne pose aucun problème, mais
dans un cas de fonctionnement normal, c'est plutôt à éviter, et
malheureusement avec le Framework 1.X, ce n'est pas toujours possible...
C'est pour cela que ces fonctions ont été crées systématiquement dans le
Framework 2.0.

Dans le cas ici, il faut faire un petit test (une boucle) entre expression
régulière et catch à mon avis.

Simon.
www.softfluent.com


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
42e0ec39$0$30184$
Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper" l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye de
créer une uri à partir d'une chaîne et si, exceptionnellement, la chaîne
n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le message
de news: dbqoa0$qp$
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un
fichier .csv duquel j'extrait des données. Je voudrais vérifier que l'un
des strings que j'extrait est bien une url - cad pr mon prog : chemin
d'accès d'un fichier (qu'elle soit valide ou non) : existe t-il une
méthode vérifiant qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu
bourrin.

Merci par avance

Sébastien








Avatar
Ambassadeur Kosh
désolé de répondre tardivement

Uri.TryCreate semble répondre à son probleme.

bon, autant dans le cadre d'un calcul lourd, raisonner avec des Assertions
me semble bien plus profitable, autant ici, une exception restant
exceptionelle, et si de plus elle est appliquée à de l'interface graphique,
me semble indiquée.

donc au choix...
Avatar
Fabien Bezagu
Oui c'est tout à fait exact. C'est d'ailleurs très dommage qu'une levée
d'exception coûte aussi cher, cela ne favorise pas leur utilisation et je ne
trouve pas le paliatif des TryXXX conceptuellement très esthétique.

Cela, je n'ai pas dit qu'il n'y avait pas de différence technique mais je
persiste à penser qu'il n'y a pas de différence fonctionnelle. Le framework
2.0 apporte juste une amélioration au niveau des performances.

Fabien

"Simon Mourier" a écrit dans le message de news:

Il y a une différence fondamentale entre tous les TryXXX de Framework 2.0
et le fait de faire un try/catch: la performance.

En effet, une levée d'exception + catch coute des milliers de cycles
processeur. Dans un cas de "vraie" erreur, ca ne pose aucun problème, mais
dans un cas de fonctionnement normal, c'est plutôt à éviter, et
malheureusement avec le Framework 1.X, ce n'est pas toujours possible...
C'est pour cela que ces fonctions ont été crées systématiquement dans le
Framework 2.0.

Dans le cas ici, il faut faire un petit test (une boucle) entre expression
régulière et catch à mon avis.

Simon.
www.softfluent.com


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news: 42e0ec39$0$30184$
Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper"
l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye de
créer une uri à partir d'une chaîne et si, exceptionnellement, la chaîne
n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le
message de news: dbqoa0$qp$
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un
fichier .csv duquel j'extrait des données. Je voudrais vérifier que
l'un des strings que j'extrait est bien une url - cad pr mon prog :
chemin d'accès d'un fichier (qu'elle soit valide ou non) : existe t-il
une méthode vérifiant qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu
bourrin.

Merci par avance

Sébastien












Avatar
Lloyd Dupont
on dis & list toujours que les exception sont tres couteuse en performance.
mais y'a t'il un benchmark quelquepart qui donne une idee plus precise?

"Fabien Bezagu" <fabien_dot_bezagu_at_free_dot_fr> wrote in message
news:%
Oui c'est tout à fait exact. C'est d'ailleurs très dommage qu'une levée
d'exception coûte aussi cher, cela ne favorise pas leur utilisation et je
ne trouve pas le paliatif des TryXXX conceptuellement très esthétique.

Cela, je n'ai pas dit qu'il n'y avait pas de différence technique mais je
persiste à penser qu'il n'y a pas de différence fonctionnelle. Le
framework 2.0 apporte juste une amélioration au niveau des performances.

Fabien

"Simon Mourier" a écrit dans le message de
news:
Il y a une différence fondamentale entre tous les TryXXX de Framework 2.0
et le fait de faire un try/catch: la performance.

En effet, une levée d'exception + catch coute des milliers de cycles
processeur. Dans un cas de "vraie" erreur, ca ne pose aucun problème,
mais dans un cas de fonctionnement normal, c'est plutôt à éviter, et
malheureusement avec le Framework 1.X, ce n'est pas toujours possible...
C'est pour cela que ces fonctions ont été crées systématiquement dans le
Framework 2.0.

Dans le cas ici, il faut faire un petit test (une boucle) entre
expression régulière et catch à mon avis.

Simon.
www.softfluent.com


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news: 42e0ec39$0$30184$
Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper"
l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye
de créer une uri à partir d'une chaîne et si, exceptionnellement, la
chaîne n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le
message de news: dbqoa0$qp$
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un
fichier .csv duquel j'extrait des données. Je voudrais vérifier que
l'un des strings que j'extrait est bien une url - cad pr mon prog :
chemin d'accès d'un fichier (qu'elle soit valide ou non) : existe t-il
une méthode vérifiant qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu
bourrin.

Merci par avance

Sébastien
















Avatar
Fabien Bezagu
Sans avoir fait de benchmarks, je me suis souvent aperçu que des problèmes
de performance pouvaient être réglés en évitant une levée d'exception...

"Lloyd Dupont" a écrit dans le message de news:

on dis & list toujours que les exception sont tres couteuse en
performance.
mais y'a t'il un benchmark quelquepart qui donne une idee plus precise?

"Fabien Bezagu" <fabien_dot_bezagu_at_free_dot_fr> wrote in message
news:%
Oui c'est tout à fait exact. C'est d'ailleurs très dommage qu'une levée
d'exception coûte aussi cher, cela ne favorise pas leur utilisation et je
ne trouve pas le paliatif des TryXXX conceptuellement très esthétique.

Cela, je n'ai pas dit qu'il n'y avait pas de différence technique mais je
persiste à penser qu'il n'y a pas de différence fonctionnelle. Le
framework 2.0 apporte juste une amélioration au niveau des performances.

Fabien

"Simon Mourier" a écrit dans le message de
news:
Il y a une différence fondamentale entre tous les TryXXX de Framework
2.0 et le fait de faire un try/catch: la performance.

En effet, une levée d'exception + catch coute des milliers de cycles
processeur. Dans un cas de "vraie" erreur, ca ne pose aucun problème,
mais dans un cas de fonctionnement normal, c'est plutôt à éviter, et
malheureusement avec le Framework 1.X, ce n'est pas toujours possible...
C'est pour cela que ces fonctions ont été crées systématiquement dans le
Framework 2.0.

Dans le cas ici, il faut faire un petit test (une boucle) entre
expression régulière et catch à mon avis.

Simon.
www.softfluent.com


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news: 42e0ec39$0$30184$
Dans le framework 2.0, il existe également une méthode statique
Uri.TryCreate mais c'est juste une autre manière de "trapper"
l'exception.

Je ne vois d'ailleurs pas en quoi un try catch est bourrin : on essaye
de créer une uri à partir d'une chaîne et si, exceptionnellement, la
chaîne n'est pas une uri valide, on la traite autrement...

Fabien

"nicolas franchet" a écrit dans le
message de news: dbqoa0$qp$
Une autre solution serait de passer par les expressions regulieres,
mais personellement la methode "bourrin" me semble mieux.

Nicolas


Sébstien wrote:
Bonjour,

Je fais actuellement un prog en C# (windows application). J'ai un
fichier .csv duquel j'extrait des données. Je voudrais vérifier que
l'un des strings que j'extrait est bien une url - cad pr mon prog :
chemin d'accès d'un fichier (qu'elle soit valide ou non) : existe
t-il une méthode vérifiant qu'un string contient une url ?

J'ai essayé de faire :
Uri test = new Uri(mon_string);

mais comme je me doutais ca fait planter mon prog.
la solution serait de faire un try{} catch{} mais je trouve ça un peu
bourrin.

Merci par avance

Sébastien