Compteur de nombre de mots dans un texte

Soyez le premier à donner votre avis sur cette source.

Vue 5 558 fois - Téléchargée 566 fois

Description

Ce petit programme donne le nombre de mots qui se trouvent dans un texte et ensuite affiche les mots trouvés ainsi que les mots redondants s'il y en a.
rien d'extraordinaire juste ammusant.

Conclusion :


J'ai modifié le programme et je l'ai simplifié je l'ai renommer
Robot de dectection de mots

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_alpha5
Messages postés
74
Date d'inscription
jeudi 10 août 2006
Statut
Membre
Dernière intervention
24 mars 2013

Merci à tous de vos conseils.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
sur le fond, nous sommes d'accord... je ne voulait pas trop chambouler le code de notr ami
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015

Pour la recherche des mots, une bonne regex me parait une bonne idée.
Pour la version simple, ça donne ça :

using System.Text;

Regex findWords = new Regex("\S+"); //un mot est une suite de caractères concomitants autre qu'un espace ou qu'un saut à la ligne.

foreach(Match word in findWords.Matches(text)) {
Mots.Add (word.Value);
}
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
Un peu de ménage plus tard (et d'ajout de .NET) :

Public Class Form1
Dim Mots As New List(Of String)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Buffer As String
If TextBox1.Text.Length > 0 Then
IndexEtRepérage()
Buffer = "Les mots sont :" & Environment.NewLine
For Each Mot As String In Mots
Buffer &= Mot & Environment.NewLine
Next
TextBox1.Text = Buffer
Button1.Enabled = False
End If
End Sub

Public Sub IndexEtRepérage()
Dim car As Char
Dim CAR_SEP As String = Convert.ToChar(10) & Convert.ToChar(13) & Convert.ToChar(9) & ". !:;,?)({[]}"""
Dim LETTRES As String = "-'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéèàùçâêëïîûô1234567890"
Dim Mot As String = String.Empty

Mots.Clear()
For Each car In TextBox1.Text & "."
If LETTRES.Contains(car) Then '1ère lettre d'un mot
Mot &= car
ElseIf CAR_SEP.Contains(car) AndAlso Mot.Length > 0 Then '1er caractère derrère un mot
If Not Mots.Contains(Mot) Then
Mots.Add(Mot)
End If
Mot = String.Empty
End If
Next
TextBox2.Text = Mots.Count.ToString()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Clear()
TextBox2.Text = "0"
Button1.Enabled = True
End Sub
End Class

te reste a remettre si tu le souhaites la gestion des multiples, etc.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
Const NB_MOTS_MAX As Short = 5000

pourquoi ce chois arbitraire ?
pourquoi prédéfinir une valeur ?

probleme de design géneral...

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.