Tipp 0214 Textsuche in Multiline-TextBox
Autor/Einsender:
Datum:
  Michael Werner
31.07.2012
Entwicklungsumgebung:   VB.Net 2008
Framework:   2.0
In einer mehrzeiligen TextBox wird nach einem Text gesucht. Einstellbar ist, ob eine Groß- bzw. Kleinschreibung berücksichtigt werden soll oder nicht. Die Textbox wird beim Aufruf in einer For Each-Schleife zeilenweise durchlaufen. Mit ToLower wird bei entsprechender Voreinstellung eine Groß-Klein-Differenzierung  verhindert. Ausgegeben wird die Zeilennummer und Position des gefundenen Suchstrings sowie die gefundenen Strings in einer ListBox aufgelistet.
 
Public Class Form1

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
          As System.EventArgs) Handles MyBase.Load
    tbMainText.Text = _
      "Hallo Leute von heute." & vbNewLine & _
      "Guten Tag. " & vbNewLine & _
      "Heute ist einer von den guten Tagen." & vbNewLine & _
      "Gut, was?" & vbNewLine & _
      "Dies ist GUT so."

    tbSearchText.Text = "Gut"
  End Sub

    'Text suchen in Multiline-TextBox
  Private Sub btnSearch_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnSearch.Click

    Dim search As String = ""
    Dim position As Integer
    Dim zeilenummer As Integer

    lstFound.Items.Clear()
    lstLocation.Items.Clear()

     'Multiline-TextBox zeilenweise durchlaufen
    For Each line As String In tbMainText.Lines
      zeilenummer += 1

       'Mit ToLower bei tbSearchText.Text und line wird
       'eine Groß-Klein-Differenzierung verhindert.
      If ckbTextSensitiv.Checked Then
        search = tbSearchText.Text
        position = line.IndexOf(search, 0)
      Else
        search = tbSearchText.Text.ToLower
        position = line.ToLower.IndexOf(search, 0)
      End If

      If position > -1 Then
         'Gefunden in Zeile an Position
        lstLocation.Items.Add("Zeile " & CStr(zeilenummer) & _
          " an Position " & CStr(position))
         'Gefundene Teistrings in Listbox ausgeben
        lstFound.Items.Add(line.Substring(position, search.Length))
      End If
    Next
  End Sub

  Private Sub btnExit_Click(ByVal sender As System.Object, ByVal _
      e As System.EventArgs) Handles btnExit.Click
    Me.Close()
  End Sub

    'Listboxen synchronisieren
  Private Sub lstFound_SelectedIndexChanged(ByVal sender As _
      System.Object, ByVal e As System.EventArgs) Handles _
      lstFound.SelectedIndexChanged
    lstLocation.SelectedIndex = lstFound.SelectedIndex
  End Sub

  Private Sub lstLocation_SelectedIndexChanged(ByVal sender As _
      System.Object, ByVal e As System.EventArgs) Handles _
      lstLocation.SelectedIndexChanged
    lstFound.SelectedIndex = lstLocation.SelectedIndex
  End Sub

End Class
 
Weitere Links zum Thema
Textsuche einschließlich Metazeichen

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (13 kB) Downloads bisher: [ 184 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 31. Juli 2012