none
rechercher des mots dans un richbox a partir de chaque mot successif d'un textbox multiligne RRS feed

  • Question

  • bonjour ou bonsoir selon le pays .en fait je suis débutant en Visual basics . je m'explique j'ai un textbox multilignes qui contient des mots disposés de la manière suivante:

    informatique

    mathematique

    physique

    mecatronique

    aeronautique

    dronotique

    robotique

    aerospacial

    arduino

    et j'ai un texte du genre:

    "je suis un étudiant en informatique et en aeronautique et j'aime bien arduino et faire de l'aerospacial"

    merci d'avance pour vos réponse 

    mardi 22 août 2017 18:31

Réponses

Toutes les réponses

  • bonjour ou bonsoir selon le pays .en fait je suis débutant en Visual basics . je m'explique j'ai un textbox multilignes qui contient des mots disposés de la manière suivante:

    informatique

    mathematique

    physique

    mecatronique

    aeronautique

    dronotique

    robotique

    aerospacial

    arduino

    et j'ai un texte dans mon richbox du genre:

    "je suis un étudiant en informatique et en aeronautique et j'aime bien arduino et faire de l'aerospacial"

    et j'aimerai bien faire une recherche automatique de chaque mot du textbox dans la phrase qui se trouve dans mon richbox et l'afficher avec une couleur rouge 

    merci d'avance pour vos réponse 

    mardi 22 août 2017 18:41
  • Plusieurs éléments dans votre question:

    • recherche de mots dans un String
    • colorisation de mots dans une TextBox

    Le plus simple est de faire une recherche avec les outils de String. Une fois que vous savez si le mot est présent vous pouvez en faire le traitement.

    Par exemple vous pouvez faire:

     Dim strListe() As String = {"informatique","mathematique","physique","mecatronique",
                "aeronautique","dronotique","robotique","aerospacial","arduino"}
    
            Dim strATester = TextBox1.Text '"je suis un étudiant en informatique et en aeronautique et j'aime bien arduino et faire de l'aerospacial"
            For Each strMot As String In strListe
                If strATester.Contains(strMot) Then
                    'Traitement du mot
    
                End If
            Next

    Si vous êtes confortable avec ce code vous pouvez commencer à regarder les expressions RegEx pour traiter vos String.

    Avant de vous aider plus avant, vous devez nous montrer le code avec lequel vous travaillez...

    mercredi 23 août 2017 09:57
  • merci déjà pour votre réponse. voici mon code : j'ai un fichier texte qui est dans mon bureau et est le contenue est copié dans un TextBox multiligne et s'affiche comme je vous l'ai montrer et je cherche les mots du TextBox dans un RichTextBox et les mettre en évidence en rouge 

    Imports System.IO
    
    Public Class Form1
    
        Dim NombreLecteurs As Byte = My.Computer.FileSystem.Drives.Count
        Dim NomsLecteurs As System.Collections.ObjectModel.ReadOnlyCollection(Of System.IO.DriveInfo)
        Dim InfosLecteurs(NombreLecteurs, 8) As String
        Dim Compteur As Byte = 1
    
        'Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        ' End Sub
    
        Private Sub LireRep(ByVal Repertoire As String)
            Dim Chemin As String
            Dim i As Int16
            Dim Exclure() As String = {"$", "WINDOWS", "SYSTEM", "PROGRAM", "USER", "DRIVER", "TOOLS", "BOOT"}
            Dim SousRep As String() = Directory.GetFileSystemEntries(Repertoire)
    
            For Each sRep As String In SousRep
                Chemin = Path.GetFileName(sRep)
                Debug.Print(Chemin)
                For i = 0 To UBound(Exclure)
                    If Microsoft.VisualBasic.Left(Chemin, Len(Exclure(i))) = Exclure(i) Then Exit For
                Next
                If i > UBound(Exclure) Then
                    Try
                        'Dim Repertoires As String() = Directory.GetFileSystemEntries("c:\")
                        Dim Repertoires As String() = Directory.GetFileSystemEntries(ComboBox1.SelectedItem.ToString)
                        For Each Rep As String In Repertoires
                            'Me.ListBox1.Items.Add(Path.GetFileName(Rep))
                            'Me.ListBox1.Items.Add(Path.GetExtension(Rep))
                            'Me.ListBox1.Items.Add(Path.GetFullPath(Rep))
                            'Me.ListBox1.Items.Add(Path.GetPathRoot(Rep))
                            RichTextBox1.AppendText(Path.GetFullPath(Rep))
                            RichTextBox1.AppendText(Path.GetFileName(Rep))
                            RichTextBox1.AppendText(Path.GetPathRoot(Rep))
                            RichTextBox1.AppendText(Path.GetExtension(Rep))
                        Next
    
                    Catch ex As Exception
                        Stop
                    End Try
                End If
            Next
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            On Error Resume Next
            NomsLecteurs = My.Computer.FileSystem.Drives
    
            For Each info As System.IO.DriveInfo In NomsLecteurs
    
                InfosLecteurs(Compteur, 0) = info.Name
                InfosLecteurs(Compteur, 1) = info.IsReady
                InfosLecteurs(Compteur, 2) = info.DriveType
                InfosLecteurs(Compteur, 3) = info.DriveFormat
                InfosLecteurs(Compteur, 4) = info.VolumeLabel
                InfosLecteurs(Compteur, 5) = info.TotalSize
                InfosLecteurs(Compteur, 6) = info.TotalFreeSpace
                InfosLecteurs(Compteur, 7) = info.AvailableFreeSpace
                Compteur = Compteur + 1
    
                'on affiche le nom des lecteurs dans le combobox
                ComboBox1.Items.Add(info.Name)
    
            Next
    
    
        End Sub
    
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            Call LireRep(ComboBox1.SelectedItem.ToString)
            Dim MonFluxDeDonnées As New FileStream("c:\users\gyf\desktop\test.txt", FileMode.Open)
            Dim MonLecteur As New StreamReader(MonFluxDeDonnées)
            Dim LaLigne As String = MonLecteur.ReadLine()
            Dim startText As Integer = 0
            Dim endText As Integer
    
    
            Do
                TextBox1.Text = LaLigne & TextBox1.Text
    
                endText = RichTextBox1.Text.LastIndexOf(TextBox1.Text)
    
                LaLigne = MonLecteur.ReadLine()
    
                While startText < endText
    
                    RichTextBox1.SelectAll()
                    RichTextBox1.Find(TextBox1.Text, startText, RichTextBox1.TextLength, RichTextBoxFinds.MatchCase)
                    RichTextBox1.SelectionBackColor = Color.Brown
    
                    startText = RichTextBox1.Text.IndexOf(TextBox1.Text, startText) + 1
    
                    ListBox1.Items.Add(TextBox1.Text)
    
                End While
    
            Loop While Not LaLigne Is Nothing
    
            MonLecteur.Close()
    
           
    
        End Sub
    
    End Class
    

    mercredi 23 août 2017 12:28
  • Sans utiliser les Regular Expression pour trouver vos mots, vous pouvez utiliser la fonction Find de RichTextBox:

    avec le code:

    Private TexteAChercher As String = "je suis un étudiant en informatique et en aéronautique et j'aime bien arduino et faire de l'aérospacial" Private MotsCles() As String = {"informatique", "mathematique", "physique", "mécatronique", "aéronautique", "dronotique", "robotique", "aérospacial", "arduino"} Private RTBTextSelectedColor As Color = Color.Chartreuse Private RTBUnSelectedBackColor As Color = Color.White Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Chargement du texte exemple RichTextBox1.AppendText(TexteAChercher & Environment.NewLine) RichTextBox1.AppendText(TexteAChercher & Environment.NewLine) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' Rechercher les mots clés dans le texte et les colorier ' Reset toutes les coleurs RichTextBox1.SelectAll() RichTextBox1.SelectionBackColor = RTBUnSelectedBackColor ' Chercher tous les mots dans tout le texte Dim PositionTexte As Integer = 0 For Each Mots As String In MotsCles PositionTexte = 0 While PositionTexte > -1 PositionTexte = FindMyText(Mots, PositionTexte + 1, RichTextBox1.TextLength - 1) ' Colorisation du texte trouvé If PositionTexte > -1 Then RichTextBox1.SelectionStart = PositionTexte RichTextBox1.Select(PositionTexte, Mots.Length) RichTextBox1.SelectionBackColor = RTBTextSelectedColor End If End While Next End Sub Public Function FindMyText(ByVal searchText As String, ByVal searchStart As Integer, ByVal searchEnd As Integer) As Integer ' Initialise la valeur à faux par défaut. Dim returnValue As Integer = -1 ' Vérification que le texte existe et que le point de départ est légitime. If searchText.Length > 0 And searchStart >= 0 Then ' Assure une valeur de retour valide. If searchEnd > searchStart Or searchEnd = -1 Then ' Obtient la position de la String dans le RichTextBox1. Dim indexToText As Integer = RichTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase) ' Vérifie que le texte a été trouvé. If indexToText >= 0 Then ' Renvoi la position du texte. returnValue = indexToText End If End If End If Return returnValue End Function

    ' AVEC REGEX

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            ' Reset les couleurs
            RichTextBox1.SelectAll()
            RichTextBox1.SelectionBackColor = RTBUnSelectedBackColor

            Dim MotsCleRegEx As String = "informatique|mathematique|physique|mécatronique|aéronautique|dronotique|robotique|aérospacial|arduino"

            Dim rex As New Regex(MotsCleRegEx)
            Dim motstrouves As MatchCollection = rex.Matches(RichTextBox1.Text)
            Dim StartCursorPosition As Integer = RichTextBox1.SelectionStart

            For Each unMot As Match In motstrouves
                Dim startIndex As Integer = unMot.Index
                Dim StopIndex As Integer = unMot.Length
                ' Colorisation
                RichTextBox1.Select(startIndex, StopIndex)
                RichTextBox1.SelectionBackColor = Color.Blue
                RichTextBox1.SelectionColor = Color.Red
            Next

        End Sub

    Si c'est pour un projet d'étudiant, n'hésitez pas à donner crédit au Forum pour votre code.... et marquez les posts qui ont aidé comme réponse...


    mercredi 23 août 2017 13:58
  • Ok j'apprecie vraiment votre aide mais je ne trouve toujours pas une solution avec votre code. voici mon interface qui contient un ComboBox et un TextBox Multiligne . alors : des que je sélectionne le lecteur dans le ComboBox le TextBox se remplie automatiquement de maniere vertical comme je vous ai montré plus haut et en même temps le richtextbox se remplie avec les information du lecteurs . des lors je voudrai aussi que automatiquement les mots du TextBox soit recherché dans le ComboBox et le résultat soit affiché dans la ListBox en dessous . 

    Merci vous êtes aimables.

    mercredi 23 août 2017 14:30
  • Lisez le code fourni en démonstration et adaptez l'une des 2 solutions pour vos Controls, peu importe l'interface utilisateur.

    Si vous montrez le code de votre adaptation on pourra peut être vous aider...
    mercredi 23 août 2017 14:36
  • merci vraiment beaucoup . j'ai trouvé la solution a mon problème grâce a vous . une fois de plus merci
    • Marqué comme réponse meye einstein samedi 26 août 2017 07:06
    samedi 26 août 2017 07:06