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 :

Fonction qui retourne True si la chaine ne contient que des chiffres


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Par défaut Fonction qui retourne True si la chaine ne contient que des chiffres
    Bonjours tout le monde,

    je viens de commencer avec c# , j'ai besoin d'une méthode qui retourne True si la chaine d'entré ne contient pas des lettre.

    Mais ca ne fonctionne pas , je ne vois pas ou sa bloque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public Boolean SeulementChiffre(string chaine)
            {
                Boolean result = true;
                int i=0;            
                while(i<chaine.Length && result)
                {
                    if (chaine[i].Equals("1") | chaine[i].Equals("2") | chaine[i].Equals("3") | chaine[i].Equals("4") |
                        chaine[i].Equals("5") | chaine[i].Equals("6") | chaine[i].Equals("7") | chaine[i].Equals("8") |
                        chaine[i].Equals("9") | chaine[i].Equals("0") | chaine[i].Equals("") | chaine[i].Equals("+") |
                        chaine[i].Equals("-") | chaine[i].Equals("(") | chaine[i].Equals(")") | chaine[i].Equals(":") |
                        chaine[i].Equals("/") | chaine[i].Equals("."))
                     i++; 
                    else
                     result = false; 
                }
     
                return result;
            }
    Merci d'avance de votre aide

  2. #2
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Bonjour,

    C'est pas plutôt des || pour signifier le 'OR' ?

  3. #3
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le problème vient de
    chaine[i] est un caractère, hors tu le testes par rapport à une chaîne.

    Ceci marchera mieux
    Pour ce qui est des opérateurs OU, il ne faut pas confondre | qui représente le OU logique et || qui représente le OU conditionnel. Les 2 fonctionnent, mais le second est adapté pour les conditions, en n'évaluant l'expression qui si nécessaire.

    Sinon, pour avoir un code plus clair, passer par une expression régulière est aussi bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public bool ChaineValide(string chaine)
    {
        return Regex.IsMatch(chaine, @"^[\d\+\-\(\):/\.]*$");
    }
    Enfin, plus clair si on comprend les expressions régulières évidemment ^^

    Si tu préfères tout tester, tu peux au moins supprimer la boucle est passer par la méthode Contains de la classe String.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 29
    Par défaut
    Merci Jmichou972 et StormimOn de vos reponse,

    Votre reponse StormimOn m'a resolu le probleme et la methode fonctionne correctement

    Mais j'ai pa bien compris votre fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Regex.IsMatch(chaine, @"^[\d\+\-\(\):/\.]*$");

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Comme je l'ai dit, c'est une expression régulière. Après on connait ... ou pas. Et si on ne connait pas, et bien cherche sur ce sujet si cela t'intéresse

    Cela permet de faire de la recherche, du remplacement ou de la validation de chaîne de caractères par exemple. Pour résumer très vite évidemment ^^

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Bien compliqué tout ça.

    Essaye simplement de convertir en nombre.

    Ex, si ta chaine est succeptible de représenter un Int :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Boolean SeulementChiffre(string chaine)
            {
            int i = 0;
            return int.TryParse(chaine, out i); 
            }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/09/2009, 18h19
  2. Réponses: 35
    Dernier message: 25/06/2008, 16h50
  3. Réponses: 9
    Dernier message: 08/08/2007, 11h35
  4. Réponses: 23
    Dernier message: 13/11/2006, 03h33
  5. Réponses: 4
    Dernier message: 20/02/2006, 00h33

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