Bonjour
comment on détermine le nombre d'occurrence d'un mot dans un fichier text
en c#
et merci d'avance :)
Version imprimable
Bonjour
comment on détermine le nombre d'occurrence d'un mot dans un fichier text
en c#
et merci d'avance :)
Tu peux le faire avec une expression régulière je pense, en comptant le nombre de résultats trouvés. Tu cherches le nombre d'occurrences d'un mot entier ou juste d'une chaîne ?
Une solution :
edit : en faite code pas terrible de plus il ne réussi que si tu n'as qu'une seule fois le mot par ligne!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 StreamReader monSR=new StreamReader("monfichier texte"); String input; int indexDuMot=0; int nombreDeFois=0; while ((input = monSR.ReadLine()) != null) { indexDuMot input.IndexOf(tonMot,indexDuMot+tonMot.Length) if (indexDuMot != -1) { nombreDeFois++; } }
mais ça fait une base ^^
qu'est ce que c'est laid comme solution :aie:
comme StormimOn, je propose les regex. y a la méthodes Matches sur lequel un simple count fera l'affaire
Une solution qui ne fonctionne que si le mot est présent une fois au maximum par ligne. D'une part tu commences la recherche à l'index indexDuMot+tonMot.Length qui sera différent de 0 la première fois. Ensuite, tu boucles sur chaque ligne du fichier texte, mais pas sur la recherche des occurrences au niveau de la ligne ;)
En restant sur le même principe, avec quelque chose comme ceci ça ira mieux
Mais, tel quel, ça ne permet pas de chercher un mot entier, uniquement les occurences d'une chaîne. Il faudrait tester les caractères avant et après l'occurrence trouvée, pour voir si c'est de la ponctuation, des espaces, ... afin de différencier le mot de la chaîne.Code:
1
2
3
4
5
6
7 string str = File.ReadAllText(monFichier); int index = -leMotAChercher.Length; int nbOccurence = 0; while ((index = str.IndexOf(leMotAChercher, index + leMotAChercher.Length, StringComparison.CurrentCultureIgnoreCase)) != -1) { nbOccurence++; }
Avec une expression régulière ça va plus vite.
C'est une version simple, mais en améliorant le pattern on doit pouvoir rechercher le nombre de mot et non le nombre d'occurence de la chaîne.Code:int nbOccurence = Regex.Matches(str, leMotAChercher, RegexOptions.IgnoreCase).Count;