Chaine de caracteres - que des chiffres ? que des lettres ? [Résolu]

romagny13 710 Messages postés lundi 10 janvier 2005Date d'inscription 27 août 2014 Dernière intervention - 18 mars 2007 à 10:31 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 18 mars 2007 à 18:02
Bonjour,
encore une petite question :pp

comment peut - on vérifier en C# qu'une chaine de caractéres ne contient que des lettres
en VB.NET il existe la méthode IsNumeric() apparemment il n'existe pas d'equivalent en C#
comment faites - vous ?

sinon il y a la possibilité de se créer une méthode générique qui recoit une chaine de caracteres et qui boucle sur chaque caractere pour verifier, et qui renverrait par exemple un boolean si un des caracteres n'est pas une lettre
mais bon je ne vais pas reinventer quelque chose si une autre maniere plus adaptée existe deja mais que je ne connaitrais pas

sinon de la meme maniere existe t'il une methode pour verifier qu'un varaibale toujours de type string ne contient que des chiffres ?

mercii
++
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 18 mars 2007 à 10:40
3
Merci
Salut, 

Pour verifier qu'une chaine ne contient que des lettres ou des chiffres, il y a (entre autres) les expressions regulieres.
Pour remplacer IsNumeric, tu peux aussi simplement utiliser les méthodes int.TryParse(), float.TryParse(), etc.

Enfin bref, tu as le choix ;)

Mx
MVP C# 

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de MorpionMx
romagny13 710 Messages postés lundi 10 janvier 2005Date d'inscription 27 août 2014 Dernière intervention - 18 mars 2007 à 10:57
0
Merci
a oui c'est vrai j'avaias pas pensé aux expressions régulières

sinon je ne suis pas trop adepte de tryparse mais en effet il a l'air de faire le travail
merci pour ses renseignements
++
Commenter la réponse de romagny13
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 mars 2007 à 11:49
0
Merci
Sans avoir benché, je pense que le TryParse est plus rapide qu'une expression régulière...
A voir.

<hr />
-Blog-
Commenter la réponse de cs_Bidou
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 18 mars 2007 à 12:01
0
Merci
Ca me fait penser que 'avait eu discussion la dessushttp://www.csharpfr.com/code.aspx?ID=35028

Mx
MVP C# 
Commenter la réponse de MorpionMx
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 mars 2007 à 12:17
0
Merci
C'est pas facile de bencher, car si on prend un certain nombre d'entier à tester, il faut mettre un pourcentage de non-entier.
Et certainement que selon ce pourcentage, on a des résultats qui peuvent être assez différent....

Je vais essayer de faire un petit teste tient, ça pourrait être intéressant.

<hr />
-Blog-
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 mars 2007 à 12:30
0
Merci
J'ai généré un tableau de 10'000 éléments (des strings).
J'ai mis un certain pourcentage de string qui n'était pas des nombres (les entiers étaient générés aléatoirement)
L'expression régulière était compilée au préalable.

Résultat:
10% de non entier    TryParse environ 15x plus rapide
20% de non entier    TryParse environ 25x plus rapide
30% de non entier    TryParse environ 40x plus rapide
50% de non entier    TryParse environ 60x plus rapide

<hr />
-Blog-
Commenter la réponse de cs_Bidou
romagny13 710 Messages postés lundi 10 janvier 2005Date d'inscription 27 août 2014 Dernière intervention - 18 mars 2007 à 13:34
0
Merci
a oui j'ai vu MorpionMx la source sur csharpfr

personnellement je viens de me faire deux petites fonctions qui sont ce qu'elles sont mais je les poste quand meme elles peuvent toujours servir 

// string




        ///<summary>




       
///
vérifie que la chaine ne contient que des lettres




       
///
</summary>




        ///






        ///<returns></returns>




        publicbool isLetter(string sReceive)




        {




            bool bResult;




            char[] cWork;




            System.Collections.IEnumerator EnumeratorcWork;



 



            bResult = true;




            cWork = sReceive.ToCharArray();




            EnumeratorcWork = cWork.GetEnumerator();



 



            while (EnumeratorcWork.MoveNext()==true)




            {




                if (Char.IsLetter((Char)EnumeratorcWork.Current) == false)




               
{




                    bResult = false;




                }




            }




       




            return bResult;




        }




        ///<summary>




        /// vérifie que la chaine ne contient que des chiffres




       
///
</summary>




        ///






        ///<returns></returns>




        publicbool isDigit(string sReceive)




        {




            bool bResult;




            char[] cWork;




            System.Collections.IEnumerator EnumeratorcWork;



 



            bResult = true;




            cWork = sReceive.ToCharArray();




            EnumeratorcWork = cWork.GetEnumerator();



 



            while (EnumeratorcWork.MoveNext() == true)




            {




                if (Char.IsDigit((Char)EnumeratorcWork.Current) == false)




               
{




                    bResult = false;




                }




            }



 



            return bResult;




        }




 
Commenter la réponse de romagny13
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 mars 2007 à 18:02
0
Merci
Pourquoi faire "si compliqué"?
foreach(char c in myString)
{
}

Va très bien aussi

<hr />
-Blog-
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.