Extraire lettre dans un string [Résolu]

spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 20 avril 2010 à 21:30 - Dernière réponse : spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention
- 23 avril 2010 à 19:30
Bonjour

Je dois extraire certaine lettre (différente) dans plusieurs string

exemple, combien il y a de ``a`` de ``f`` de ``g`` et de ``s`` dans abcdefffgijkl

Quelle méthode est ce que je devrais utiliser split ?

Merci d'avance pour vos suggestions
Afficher la suite 

11 réponses

Répondre au sujet
cs_GG29 327 Messages postés vendredi 23 décembre 2005Date d'inscription 8 février 2011 Dernière intervention - 21 avril 2010 à 10:31
+3
Utile
Pourquoi ne pas faire tout simplement
int count = 0;
foreach(char c in s)
{
    if(c == 'a')
        count++;
}



---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_GG29
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 22 avril 2010 à 22:12
+3
Utile
La solution la plus rapide est fort probablement une solution avec boucle for, similaire à celle proposée ci-dessus:

   int count = 0;
            for (int i = 0; i < s.Length - 1; i++)
            {
                if(s[i] == 'l') count++;
            }




[hr]
-Site personnel-
-Blog-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 avril 2010 à 21:52
0
Utile
Salut,

Le split peut-être une solution
Une regex peut faire l'affaire aussi
Et encore mieux une expression linq
cf http://msdn.microsoft.com/en-us/library/bb397915%28v=VS.100%29.aspx
et les autres elements dans le treeview

Ou la methode ancienne les boucles

Apres à toi de trouver la plus optimisée
(je pencherais pour la mèthode linq) a voir.

Merci de compléter avec tes expériences et résultats.
Commenter la réponse de nhervagault
cs_GG29 327 Messages postés vendredi 23 décembre 2005Date d'inscription 8 février 2011 Dernière intervention - 20 avril 2010 à 22:14
0
Utile
combien il y a de ``a`` de ``f`` de ``g`` et de ``s`` dans abcdefffgijkl

Avec linq ca va très vite
taChaine.Count(c => c == 'a')


---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Commenter la réponse de cs_GG29
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 avril 2010 à 22:22
0
Utile
J'avais oublié la version lambda ;-)
Le linq est traduit en lambda à la compilation. ;-)

Bon dev
Commenter la réponse de nhervagault
spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 21 avril 2010 à 04:23
0
Utile
Merci pour vos réponse mais ca ne fonctionne pas !

Je croyais que c'était simple de compter des lettres dans une chaine de caractères ! avec split je ne suis pas certain de comment écrire ma formule et je n'arrive pas a trouver un exemple concret sur le NET. Avec Linq (ce que GG29 a proposer) mon programme ne plante pas mais il ne compte rien !?

Merci d'avance pour vos suggestions
Commenter la réponse de spmsbl
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 21 avril 2010 à 10:14
0
Utile
Ben t'as qu'a le faire à la main !

Deux solutions :
- Une boucle qui fait un substring de taille 1 sur ton string

- Tu fait string->toCharArray, tu parcours le tableau en cherchant tes charactères !
Commenter la réponse de deadhand
deadhand 159 Messages postés dimanche 15 octobre 2006Date d'inscription 27 août 2010 Dernière intervention - 21 avril 2010 à 10:45
0
Utile
Ben voilà !
Commenter la réponse de deadhand
spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 21 avril 2010 à 20:19
0
Utile
Merci beaucoup a vous deux !!

Ca marche super !
Commenter la réponse de spmsbl
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 22 avril 2010 à 00:25
0
Utile
Les codes proposés fonctionnent parfaitement
tu devais mal les utiliser voici pour ta culture un exemple rapide

            //Chaine
            string taChaine = "abafjdsklgjlajdfklsjgklaa";
            
            //Lambda
            int nb taChaine.Count(c> c == 'a');
            button1.Content = nb.ToString();
            //Linq
            nb = (from c in taChaine
                  where c == 'a'
                  select c).Count();
            button1.Content += " " + nb.ToString();
            //Regexp
            var reg = new System.Text.RegularExpressions.Regex("a");
            nb = (reg.Matches(taChaine)).Count;
            button1.Content += " " + nb.ToString();
            //Split
            nb = (taChaine.Split('a')).Length - 1;
            button1.Content += " " + nb.ToString();

Commenter la réponse de nhervagault
spmsbl 51 Messages postés lundi 2 octobre 2006Date d'inscription 14 février 2013 Dernière intervention - 23 avril 2010 à 19:30
0
Utile
Merci beaucoup Bidou !!

C'est encore mieux, c'est ce que je cherchais comme réponse
Commenter la réponse de spmsbl

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.