Bonjour
comment on détermine le nombre d'occurrence d'un mot dans un fichier text
en c#
et merci d'avance
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 ?
Pas de questions techniques par MP
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
comme StormimOn, je propose les regex. y a la méthodes Matches sur lequel un simple count fera l'affaire
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part int nbOccurence = Regex.Matches(str, leMotAChercher, RegexOptions.IgnoreCase).Count;
Pas de questions techniques par MP
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager