Bestimmte Zeile aus Richtextbox suchen/auslesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Charlie2013.

    Bestimmte Zeile aus Richtextbox suchen/auslesen

    Hallo liebes Forum,

    ich möchte gerne aus einer Richtextbox (in der ein HTML Code steht) ein bestimmtes Wort suchen und dann die Zeile ausgeben in der dieses steht.
    Momentan komme ich nicht weiter. Mein Ansatz bisher ist folgender:

    Quellcode

    1. Dim POS As Integer = RichTextBox1.Find(TextBox2.Text)
    2. RichTextBox2.Text = POS




    Dabei wir mir aber nicht die Zeile sonder die Position des Zeichens ausgegeben.
    Könnte Ihr mir vielleicht helfen?

    Liebe Grüße,
    Charlie2013
    oder benutz lieber den hier;

    VB.NET-Quellcode

    1. RichTextBox2.Text = RichTextBox1.Lines.ToList.FindIndex(Function(item) item.ToLower.Contains(TextBox1.Text.ToLower)).ToString


    Also, das musst du in z.B. ein Button.click event reinfügen. Der Code macht folgendes:

    Alle Zeilen von Richtextbox1 werden in eine List (of t) eingefügt/umgewandelt um .findindex nutzen zu können, dannach wird jedes Element (Zeile) darin durchgegangen und geprüft ob in der Zeile der Text von Textbox1 enthalten ist. Der Index wird dann zurückgegeben und in der Richtextbox2 angezeigt (Index fängt bei 0 an!). Das .ToLower benutze ich damit Groß-/Kleinschreibung nicht beachtet werden soll, denn ich lasse den text der richtextbox1 und der textbox1 einfach in kleinbuchstaben umwandeln.
    Das .ToString am ende ist, weil Richtextbox2.text einen string erwartet aber die funktion einen Integer liefert.

    Als Beispiel im Button Event:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. RichTextBox2.Text = RichTextBox1.Lines.ToList.FindIndex(Function(item) item.ToLower.Contains(TextBox1.Text.ToLower)).ToString
    3. End Sub


    Wenn du dann in der Textbox1 angibst "Hallo" und in der Richtextbox1 ebenfalls "Hallo" in der ersten Zeile, dann auf den Button drückst, wird der Index der Zeile in Richtextbox2 wiedergegeben.

    Das hier ginge auch;

    VB.NET-Quellcode

    1. For Each line As String In RichTextBox1.Lines
    2. If line.ToLower.Contains(TextBox1.Text.ToLower) Then
    3. RichTextBox2.Text = RichTextBox1.Lines.ToList.IndexOf(line).ToString
    4. End If
    5. Next


    und ist für dich denk ich mal leichter verständlich

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RushDen“ ()

    @Charlie2013: Zunächst einmal musst Du wissen, dass das, was Du in Deiner RichTextBox als Zeile empfindest, nicht unbedingt eine separate Zeile ist.
    Da gibt es "physische" Zeilen und logische Zeilen.
    Physische Zeilen haben als Ende ein <LF> und Du kannst sie per RTB.Lines auslesen.
    Logische Zeilen entstehen, wenn die RTB-Property WordWrap = True ist und wenn der Text über den Rand hinaus reichen würde.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!