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 :

Comment faire afficher "/" par l'utilisateur [Débutant]


Sujet :

C#

  1. #1
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut Comment faire afficher "/" par l'utilisateur
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    static string DateExpireContact()
            {
     
                string dateExpireContact = "";
                bool dateExpireValide = false;
                do
                {
                    Console.WriteLine();
                    Console.Write(" Donnez-moi la date expiration de la carte de l'identificateur (sous forme : mm/yyyy): ");
                    //recuperation du saisie du donateur
                    dateExpireContact = Console.ReadLine().ToUpper();
                    bool valideAlpha = false;
     
                    if (dateExpireContact.Length != 7)
                    {
                        Console.WriteLine();
                        Console.WriteLine(" L'identification de l'expiration de votre carte");
                        Console.WriteLine(" doit etre composer de sept caracteres");
                        Console.WriteLine(" et doit etre sous forme mm/yyyy en nombre.");
                    }
                    else
                    {
     
                        for (int i = 0; i < dateExpireContact.Length; i++)
                        {
                            if (i==2)
                            {
                                if(dateExpireContact[2] == '/')
                                {
                                    valideAlpha = true;
     
                                }
                                else
                                {
                                    valideAlpha = false;
                                    i = dateExpireContact.Length;
     
                                }
                                continue;
                            }
     
                            if (char.IsNumber(dateExpireContact[i]))
                            {
                                valideAlpha = true;
     
                            }
                            else
                            {
                                valideAlpha = false;
                                i = dateExpireContact.Length;
                            }
     
     
                        }
     
                        if (valideAlpha)
                        {
                            if (VerifierIdContact(dateExpireContact))
                            {
                                dateExpireValide = true;
                            }
                            while (!dateExpireValide)
                            {
                                //retour de la valeur saisie a la methode NouveauDonateur
                                return dateExpireContact;
                            }
                        }
                        //verifier afin de que le id n'exite pas dans notre ficher
                        if (VerifierDateExpireContact(dateExpireContact))
                        {
                            dateExpireValide = true;
                        }
                    }
                    while (!dateExpireValide)
                    {
                        //retour de la valeur saisie a la methode NouveauDonateur
                        return dateExpireContact;
                    }
                }
     
                while (!dateExpireValide);
                {
                    //retour de la valeur de saisie a la methode NouveauDonateur
                    return dateExpireContact;
                }
            }
     
            static bool VerifierDateExpireContact(string dateExpireContact)
            {
                //declaration des variables utilisees par la methode.
                string ligne = null;
                string[] contact;
                //creation d'un lecteur pour la lecture des informations du ficher Contacts.txt.
                StreamReader lecture = new StreamReader(nomFichier);
                //creation de la boucle
                while ((ligne = lecture.ReadLine()) != null)
                {
                    contact = ligne.Split(',');
                    // Si id saisie existe
                    if (contact[6].ToUpper() == dateExpireContact.ToUpper())
                    {
                        //affichage des information trouver
                        Console.WriteLine();
                        Console.WriteLine(" Un contact portant ce numero d'identification");
                        Console.WriteLine(" existe deja dans la liste de vos contact.");
                        Console.WriteLine(" Voici son enregistrement.");
                        Console.WriteLine();
                        Console.WriteLine($" ID du contact : {contact[0]}");
                        Console.WriteLine($" Nom du contact : {contact[1]}");
                        Console.WriteLine($" Prenom du contact : {contact[2]}");
                        Console.WriteLine($" Adresse du contact du contact : {contact[3]}");
                        Console.WriteLine($" Numero de telephone du contact : {contact[4]}");
                        Console.WriteLine($" Type de la carte du contact : {contact[5]}");
                        Console.WriteLine($" Date d'expiration du contact : {contact[6]}");
                        Console.WriteLine($" Dons totaux du contact : {contact[7]}");
                        Console.WriteLine();
                        //si le ID saisie est trouver dans le fichier Contact.txt
                        return false;
                    }
                }
                lecture.Close();
                //si ID saisie n'est pas trouver dans le ficher Contacts.txt
                return true;
            }
    Dans le PREMIER essais je veux que ca sois afficher comme erreur comme dans le DERNIER essais ! PS. j'ai changer le message d'erreur

    Nom : CaptureProbleme2.PNG
Affichages : 496
Taille : 46,2 Ko

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 478
    Par défaut
    Bonjour,
    Le mieux (à mon avis) pour vérifier qu'une entrée respecte bien un "format" particulier est d'utiliser une expression régulière, via la classe regex.
    Si je ne m'abuse, l'expression devrait être ^\d{2}\/\d{4}$ (début de chaine, 2 décimaux, un /, 4 décimaux, fin de chaine).
    Tu peux tester ton expression par exemple ici.

    Tatayo.

  3. #3
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut

    pour la regex. Il me semblerait pertinent d'y ajouter la validation du mois (soit de 01 à 12). ^(?:(?:0[1-9]|1[0-2])/\d{4})$ devrait faire l'affaire.

    @tatayo pas besoin d'échapper le '/' pour les regex .NET

  4. #4
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut reponse
    Merci de votre aide !! J'ai reformuler avec regex!! et merci pour le lien pour tester mon regex . BTW /\d n'est pas valide … .


    Nom : CaptureProbleme22R.PNG
Affichages : 495
Taille : 36,2 Ko

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 478
    Par défaut
    Tu es sûr de ta regex ? Je ne vois aucun /, et si je la traduis bien la chaine 1922018 sera considérée comme valide, contrairement à 12/2018.
    Pourquoi ne pas utiliser celle de Max ?

    Tatayo.

  6. #6
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut studen
    Citation Envoyé par tatayo Voir le message
    Tu es sûr de ta regex ? Je ne vois aucun /, et si je la traduis bien la chaine 1922018 sera considérée comme valide, contrairement à 12/2018.
    Pourquoi ne pas utiliser celle de Max ?

    Tatayo.
    Tu as raison mais un autre petit probleme survient … quand mon premier chiffre n'est pas dans la condition, ca me donne vrai !!

    Nom : CaptureProbleme222.PNG
Affichages : 404
Taille : 136,6 Ko

  7. #7
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut
    Citation Envoyé par Max Voir le message
    Salut

    pour la regex. Il me semblerait pertinent d'y ajouter la validation du mois (soit de 01 à 12). ^(?:(?:0[1-9]|1[0-2])/\d{4})$ devrait faire l'affaire.

    @tatayo pas besoin d'échapper le '/' pour les regex .NET
    Ce regex me fait accepter tout les conditions … ?

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 478
    Par défaut
    Pourtant je viens de faire ce petit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		private static void TestRegex()
    		{
    			Regex myRegex = new Regex(@"^(?:(?:0[1-9]|1[0-2])/\d{4})$");
    			Console.WriteLine(myRegex.IsMatch("1922018"));
    			Console.WriteLine(myRegex.IsMatch("19/2018"));
    			Console.WriteLine(myRegex.IsMatch("12/2018"));
    		}
    Et le retour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    False
    False
    True
    Tatayo.

  9. #9
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Pourtant je viens de faire ce petit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		private static void TestRegex()
    		{
    			Regex myRegex = new Regex(@"^(?:(?:0[1-9]|1[0-2])/\d{4})$");
    			Console.WriteLine(myRegex.IsMatch("1922018"));
    			Console.WriteLine(myRegex.IsMatch("19/2018"));
    			Console.WriteLine(myRegex.IsMatch("12/2018"));
    		}
    Et le retour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    False
    False
    True
    Tatayo.

    Mais oui , je vois ca !! bizarre (mon ordi me joue des tour, my bad), il y a tu un erreur dans ma condition alors ??

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    static string DateExpireContact()
            {
     
                string dateExpireContact = "";
                bool dateExpireValide = false;
                do
                {
                    Console.WriteLine();
                    Console.Write(" Donnez-moi la date expiration de la carte de l'identificateur (sous forme : mm/yyyy): ");
                    //recuperation du saisie du donateur
                    dateExpireContact = Console.ReadLine().ToUpper();
                    Regex myRegex = new Regex(@"^(?:(?:0[1-9]|1[0-2])/\d{4})$");
                    if ((dateExpireContact.Length != 7) || (myRegex.IsMatch(dateExpireContact)))
                    {
                        Console.WriteLine();
                        Console.WriteLine(" L'identification de l'expiration de votre carte");
                        Console.WriteLine(" doit etre composer de sept caracteres,");
                        Console.WriteLine(" doit etre sous forme mm/yyyy en nombre");
                        Console.WriteLine(" et doit etre ecrit comme ex: 03/2002.");
                    }
                    else
                    {
     
                        //verifier afin de que le id n'exite pas dans notre ficher
                        if (VerifierCodeCarte(dateExpireContact))
                        {
                            dateExpireValide = true;
                        }
                    }
                    while (!dateExpireValide)
                    {
                        //retour de la valeur saisie a la methode NouveauDonateur
                        return dateExpireContact;
                    }
                }
                while (!dateExpireValide);
                {
                    //retour de la valeur de saisie a la methode NouveauDonateur
                    return dateExpireContact;
                }
            }
     
            static bool VerifierDateExpireContact(string dateExpireContact)
            {
                //declaration des variables utilisees par la methode.
                string ligne = null;
                string[] contact;
                //creation d'un lecteur pour la lecture des informations du ficher Contacts.txt.
                StreamReader lecture = new StreamReader(nomFichier);
                //creation de la boucle
                while ((ligne = lecture.ReadLine()) != null)
                {
                    contact = ligne.Split(',');
                    // Si id saisie existe
                    if (contact[6].ToUpper() == dateExpireContact.ToUpper())
                    {
                        //affichage des information trouver
                        Console.WriteLine();
                        Console.WriteLine(" Un contact portant ce numero d'identification");
                        Console.WriteLine(" existe deja dans la liste de vos contact.");
                        Console.WriteLine(" Voici son enregistrement.");
                        Console.WriteLine();
                        Console.WriteLine($" ID du contact : {contact[0]}");
                        Console.WriteLine($" Nom du contact : {contact[1]}");
                        Console.WriteLine($" Prenom du contact : {contact[2]}");
                        Console.WriteLine($" Adresse du contact du contact : {contact[3]}");
                        Console.WriteLine($" Numero de telephone du contact : {contact[4]}");
                        Console.WriteLine($" Type de la carte du contact : {contact[5]}");
                        Console.WriteLine($" Date d'expiration du contact : {contact[6]}");
                        Console.WriteLine($" Dons totaux du contact : {contact[7]}");
                        Console.WriteLine();
                        //si le ID saisie est trouver dans le fichier Contact.txt
                        return false;
                    }
                }
                lecture.Close();
                //si ID saisie n'est pas trouver dans le ficher Contacts.txt
                return true;
            }

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 478
    Par défaut
    Je dirai que le problème se trouve ligne 13.
    Relis bien ta condition, et compare avec mon code et son résultat. Le problème devrait te sauter aux yeux.

    Tatayo.

    P.S. A quoi sert le while de la ligne 30 ?

  11. #11
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Petite parenthèse pour info :

    Citation Envoyé par Frokos Voir le message
    et merci pour le lien pour tester mon regex . BTW /\d n'est pas valide … .
    /\d n'est pas valide sur le lien regex101 parce qu'il valide dans ce cas les regex au format pcre php (le formalisme .NET comporte des différences). C'est d'ailleurs pour cela que tatayo avait échappé le '/' avec un '\'

    Tu as pu constater par toi même par la suite que c'était bel et bien valide

  12. #12
    Membre actif Avatar de Frokos
    Homme Profil pro
    Programmeur/analyste
    Inscrit en
    Octobre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur/analyste

    Informations forums :
    Inscription : Octobre 2017
    Messages : 17
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Je dirai que le problème se trouve ligne 13.
    Relis bien ta condition, et compare avec mon code et son résultat. Le problème devrait te sauter aux yeux.

    Tatayo.

    P.S. A quoi sert le while de la ligne 30 ?
    la verification entre le saisie de l'utilisateur et la donne dans le document Txt,. et s'il n'est pas bon et bien il le retourne.
    mon document txt : Contacts.txt

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/06/2008, 10h36
  2. comment faire afficher des é ou è ou.
    Par zac59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/12/2007, 21h21
  3. Réponses: 18
    Dernier message: 19/06/2007, 18h23
  4. Comment faire afficher la position d'un element dans un tableau
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/11/2006, 13h44
  5. comment faire insertion par une transaction sous access
    Par iam dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/04/2006, 15h34

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