Compter le nombre de caractère dans un string

Signaler
Messages postés
57
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
20 avril 2011
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
bonjour à tous,

j'aimerais savoir s'il y a une fonction en csharp qui permette de calculer combien de fois j'ai un caractères.
Exemple : ma string ha ha ha
Resultat pour le caractère a: 4

Merci beaucoup

6 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Bonjour,
Oui avec les expressions régulières.
Tu trouveras tout ce qu'il te faut dans le namespace System.Text.RegularExpression.

http://msdn2.microsoft.com/fr-fr/library/system.text.regularexpressions.regex_members(VS.80).aspx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Salut,

Plus concrétement :

<hr />public
int CountChars(
string str,
string character)
{

   Regex regex =
new
Regex(character);

   return regex.Matches(str).Count;
}
<hr />

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Bof, les expressions régulières faut vraiment les utiliser quand on peut pas faire autrement ou alors lorsqu'on gagnerait des heures de développement. Dans un cas comme celui-ci on est, selon mes testes, environ 10x plus rapide qu'une Regex si on fait:

private
int GetNbOcc(
string str,
char c)
{
  
int index = -1;
  
int occ = 0;
  
while ((index = str.IndexOf(c, ++index)) > 0) occ++;
   r
eturn occ;
}

<hr />
-Blog-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

Je ne sais pas ce que ça donne en termes de performances, mais on peut aussi faire comme ça :

string str=
"ma string ha ha ha";

int nbOcc = str.Split(
new
char[] {
'a' }).Length - 1;

Ou encore :

int nbOcc2 = str.Length - str.Replace(
"a",
"").Length;

Amicalement, SharpMao
Messages postés
57
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
20 avril 2011

Merci à tous

J'ai appris pleins de choses.

A ++
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Si c'est comme ça.. moi aussi je donne ma version.

public int GetCount( string s, char c )
{
    int cnt = 0;
  
    foreach( char ch in s )
        if ( ch == c )
            cnt++;


    return cnt;
}