Extraire lettre dans un string [Résolu]

Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
- - Dernière réponse : spmsbl
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
- 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

Meilleure réponse
Messages postés
327
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
10
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 184 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_GG29
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
41
3
Merci
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-

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 184 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
0
Merci
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
Messages postés
327
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
10
0
Merci
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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
0
Merci
J'avais oublié la version lambda ;-)
Le linq est traduit en lambda à la compilation. ;-)

Bon dev
Commenter la réponse de nhervagault
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
0
Merci
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
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
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
Messages postés
159
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
Ben voilà !
Commenter la réponse de deadhand
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
0
Merci
Merci beaucoup a vous deux !!

Ca marche super !
Commenter la réponse de spmsbl
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
0
Merci
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
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
0
Merci
Merci beaucoup Bidou !!

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