IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Equivalent de IsNumeric [FAQ]


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 26
    Points : 24
    Points
    24
    Par défaut [C#] Equivalent de IsNumeric
    salut

    Je cherche l'équivalent de IsNumeric de VB...

    en fait je veux savoir si une valeur saisie ds un textbox est une valeur numérique...
    thanks

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    voila:
    http://www.developpez.net/forums/vie...ight=isnumeric

    avec la methode de morpheus!

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    merci pour le lien et pour le code
    a+

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Salut,
    J'ai trouvé le code mais j'ai des problème quand je passe certains string en parametre. il retourne true...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private bool Is_Int( string str ) 
    		{ 
    			Regex numregex = new Regex("\\d"); 
    			Match found = numregex.Match(str); 
    			return found.Success; 
     
    		}
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Is_Int("1222kjjk");
    ça me renvoie true...
    Que signifie le" \\d" que prend en parametre Regex?
    merci

  5. #5
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    ah oui tiens normalement \\d c'est pour digit

    Regex("^-[0-9]*$"); alors

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Piotrek
    ah oui tiens normalement \\d c'est pour digit

    Regex("^-[0-9]*$"); alors
    Ben et 2.50 ? C'est pas numeric ?

    Je proposerai un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    private bool IsNumeric( string str ) 
          { 
             Regex numregex = new Regex("^(\d|-)?(\d|,)*\.?\d*$"); 
             Match found = numregex.Match(str); 
             return found.Success; 
     
          }
    ça gère les décimals, les nombres négatifs et les nombres formattés avec une virgule (ou decimaux anglo-saxon)...On pourrait encore améliorer pour gérer les nombres formattés avec apostrophe (1'000'000)...

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    A noté que la Regex que j'avais montré était particulière à mon cas

    Mais celle de Keihilin me semble bien pratique.

    Merci

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Je m'excuse de déranger mais
    quand j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Regex numregex = new Regex("^(\d|-)?(\d|,)*\.?\d*$")
    il me permet de taper ceci par exemple:
    258.25.2
    ou bien

    354,58,574
    c a d deu fois une virgule ou un point.
    je veux éviter cela, comment je fais?

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    il accepte plutot les deux virgules, je m'excuse...

  10. #10
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par yannick
    Je m'excuse de déranger mais
    quand j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Regex numregex = new Regex("^(\d|-)?(\d|,)*\.?\d*$")
    il me permet de taper ceci par exemple:
    258.25.2
    ou bien

    354,58,574
    c a d deu fois une virgule ou un point.
    je veux éviter cela, comment je fais?
    354,58,574 c'est normal, les , sont considérées comme du formattage.

    Par contre, 258.25.2 c'est pas possible...et je viens de retester chez moi.

  11. #11
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Bon c'est vrai que les regex, c'est pas le top, si en plus l'appli doit fonctionner dans plusieurs cultures differentes, c'est meme pas la peine

    Les exceptions c'est hors de question

    Donc mesdames et messieurs je vous presente: Double.TryParse

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Piotrek
    Donc mesdames et messieurs je vous presente: Double.TryParse
    Yup, environ 25 fois plus rapide qu'avec RegEx et plus de 100 fois plus que les exceptions :)

    Cela dit, s'ils avaient mis ça au niveau de CultureInfo, ça aurait été un poil plus logique :)

  13. #13
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Effectivement j'utilise Double.tryParse maintenant.
    Avant je faisais une boucle pour parcourir la chaine, et je testais si chaque caractère était bien un digit avec char.IsDigit() ou si c'était le séparateur décimal de la culture invariant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent de IsDate, IsNumeric etc
    Par Filippo dans le forum Débutez
    Réponses: 4
    Dernier message: 29/09/2009, 12h50
  2. Réponses: 10
    Dernier message: 23/10/2008, 13h58
  3. [C#] Equivalence de la fonction VB isnumeric() en C#
    Par edzodzinam dans le forum ASP.NET
    Réponses: 15
    Dernier message: 22/02/2006, 15h09
  4. Equivalent IsNumeric
    Par Off$ide dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 16/02/2005, 18h07
  5. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo