Zwischen zwei Zeichen auslesen aus einer Richtextbox

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von lokue.

    Zwischen zwei Zeichen auslesen aus einer Richtextbox

    Hallo und einen schönen Samstag Ihr lieben.

    Ich probiere schon den halben Tag bestimmte Inhalte aus einer RichTextBox zu lesen, das gelingt mir leider nicht.

    Habe in meiner Richtextbox folgenden Inhalt:

    <title1>Sonnenschein</title1>

    Wie kann ich den Inhalt "Sonnenschein" auslesen, ohne dass ich weiß, was eigentlich dort steht? (Der Inhalt wird dynamisch sein)




    Bitte keine Antworten wie "SUFU hilft.." ich Suche bereits sehr intensiv danach und daher habe ich mich entschieden die Power dieser Community zu nutzen ;(
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Könnte man auch so machen:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. RichTextBox1.Text = "<title1>Sonnenschein</title1>"
    3. End Sub
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Dim str As String = RichTextBox1.Text
    6. Dim iStart As Integer = str.IndexOf(">") + 1
    7. Dim iEnd As Integer = str.LastIndexOf("<")
    8. Dim result As String = str.Substring(iStart, iEnd - iStart)
    9. MessageBox.Show(result)
    10. End Sub
    Klingt ja eher nach HTML-Parsing. Erst ist es Title, dann kommt sonstnochwas hinzu. Der einzige, der das mit Regex vollumfänglich hinbekommt, ist Chuck Norris.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Eher XML, aber stimmt schon.

    @lokue
    Dann vielleicht besser so:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Dim source As String = "<title1>Sonnenschein</title1>"
    3. Dim doc As New Xml.XmlDocument
    4. doc.LoadXml(source)
    5. Dim name As String = doc.DocumentElement.Name
    6. Dim text As String = doc.InnerText
    7. MessageBox.Show("Das Element '" & name & "' beinhatet '" & text & "'")
    8. End Sub
    Falls Du mehr Html-Zeugs parsen möchtest gibt es dafür ein extra tool html-agility-pack.net. Muss man sich aber auch erst rein finden. Wenn es wenig ist was Du parsen möchtest würde ich es so machen wie o. beschrieben oder eben Regex. LG nogood
    codewars.com Rank: 4 kyu
    so kannst du den Text zwischen Zeichen auslesen

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Public Class Form12
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. With RichTextBox1
    5. .Text = "ich suche nach <title1>Sonnenschein</title1> " & vbNewLine & _
    6. "könnte aber auch was anderes sein " & vbNewLine & _
    7. "zb. einen <title2>mehr Sonnenschein</title2>"
    8. End With
    9. End Sub
    10. Private Sub Mark(ByVal rtb As RichTextBox, ByVal word As String, ByVal color As Color)
    11. Dim matchc As MatchCollection = Regex.Matches(rtb.Text.ToLower(), word.ToLower())
    12. For Each m As Match In matchc
    13. rtb.Select(m.Index, m.Length)
    14. rtb.SelectionColor = color
    15. rtb.Select(rtb.Text.Length, 0)
    16. rtb.SelectionColor = Drawing.Color.Black
    17. Next
    18. End Sub
    19. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    20. Mark(RichTextBox1, "\>(?<xyz>(.*))\<", Color.Red)
    21. End Sub
    22. End Class




    EDIT:
    ich sehe gerade das > mit Rot markiert wird.
    ändere zu...

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Mark(RichTextBox1, "(?<=<.*?>)(.*?)(?=</.*?>)", Color.Red)
    3. End Sub

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