Controle sur un string [Résolu]

Signaler
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013
-
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013
-
Bonjour tout le monde,

je voudrais savoir si quelqu'un saurait comment faire pour faire un contrôle sur une chaine de caractère. Je m'explique plus en détail : j'ai un programme qui crée des fiches clients pour une bibliothèque. Donc quand je dois créer une fiche pour une personne ou modifier une fiche, j'aimerais faire un contrôle sur le numéro de téléphone à la saisie, pour ne pas avoir + de 10 caractères.

J'espère que j'ai été clair dans mes explications et que vous pourrez m'aider à résoudre mon problème

Merci encore à tous ceux qui m'aideront!!!!

Bonne journée

17 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
C'est plus complet comme ça ^^

static void Main( string[ ] args )
{
    string text = String.Empty;


    do
    {
        Console.WriteLine( "Numéro de tel ( 10 chiffres ) : " );
        text = Console.ReadLine( );


    } while ( !IsValid( text ) );
}


private static bool IsValid( string text )
{
    if ( text.Length != 10 )
        return false;


    foreach( char c in text )
    {
        if ( ( int )c < 48 || ( int )c > 57 ) // IsDigit.
            return false;
    }


    return true;
}
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
Les expressions régulières c'est bien si on connait.. Puis derrière IsMatch il se cache pas mal de code quand même.

Jojo, avec cette ligne "if ( ( int )c < 48 || ( int )c > 57 )" je teste la valeur ASCII des caractères de la chaine. On peut l'écrire comme ça : "if ( c < '0' || c > '9' )".
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Si je comprends bien, tu veux simplement vérifier la saisie d'un numéro dans une Textbox ?

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Une MaskedTextBox peut-être ?

<hr size="2" />-Blog-
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Non, non pardon, j'ai oublié de précisé que c'était en mode console. Et en fait, je voudrais juste que quand je rentre le téléphone je ne puisse saisir que 10 caractères au maximum quoi!!

Merci encore!!!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
une expression régulière :)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Heuu, est ce que par hasard, tu pourrais être plus explicit s'il te plait, parce que là je vois pas du tout, désolé...
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
bah... le but des expressions régulière, c'est de valider le format d'une chaine de caractères.
Donc si tu veux valider une string... utilise une regex.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Ha d'accord, je connais pas du tout. Je vais voir ce que ca donne!!!! Merci
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Pour ne pas avoir plus de 10 charatères dans une textbox attribut simplement la valeur 10 à l'attribut MaxLength.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
MoDDiB -> Il a précisé qu'il etait en mode console dans son 2eme message ;)

Mx
MVP C# 
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

Non, je ne peux pas, je n'utilise pas d'évènements, je suis en mode console... Je sais, c'est pas agréable comme truc, mais c'est dans le cadre de projets en BTS!!!
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
Salut,

Tu as dit "à la saisie"..

string text = String.Empty;


do
{
    Console.WriteLine( "Numéro de tel ( 10 chiffres ) : " );
    text = Console.ReadLine( );


} while ( text.Length != 10 );
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

je veux bien moi, mais pourrait-tu m'apporter plus de précision sur ton code, en particulier sur la ligne suivante :




if ( ( int )c < 48 || ( int )c > 57 ) // IsDigit.




et savoir aussi pourquoi tout retourne faux???
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
je persiste... mais je préfère :

Regex.IsMatch( numeroTelephone, @"\d{10}")

--> true, si le numéro est bon,
--> false sinon.

qui dit mieux ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
10 euros à celui qui fait mieux

<hr size="2" />-Blog-
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Statut
Membre
Dernière intervention
12 avril 2013

ah oui, je comprends mieux. j'ai adopté ta méthode, car elle me parait plus simple pour la compréhension, sachant que je vais devoir expliquer mon code pendant ma soutenance... En tout cas, je vous remercie tous pour votre aide!!!!!

Bonne fin de journée à l'équipe de csharpfr.com