Replace, Regex ....?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Replace, Regex ....?

    Hallo..
    Ich habe seid ca. 4 Stunden ein Problem.
    Ich habs mit Regex versucht..
    mit Replace aber ich finde nicht die richtige lösung..

    Wenn ich eine RTB mit dem Text:

    Quellcode

    1. Satz 10 50 45 486 31531
    2. Buchstabe 15 615 1 51 53 1
    3. haus 4 541 51 3 15 1 53
    4. Vogel 7 684 54 534 ...


    ...habe, Wie kann ich dann z.b. per buttonklick in der ersten Zeile die 10 in eine belibige Zahl ändern...

    Also noch mal zum mitschreiben...


    Ich habe:
    • 1 Textbox
    • 1 Combobox
    • 1 Richtextbox
    • 1 Button


    Wie kann ich wenn ich auf den buttondrücke die zeile finden in der combobox1.text drin vorkommt und dann die erste zahl ändern in textbox1.text

    Textbox1.text ="10"
    Combobox1.text="Baum"

    Aus:

    Quellcode

    1. Schule 156 1456 156 15 1
    2. Tür 51 51 5 15 1 6
    3. Baum 415 61 531
    4. Computer 4 561 53 153 1 5


    wird:

    Quellcode

    1. Schule 156 1456 156 15 1
    2. Tür 51 51 5 15 1 6
    3. Baum 10 61 531
    4. Computer 4 561 53 153 1 5



    Mfg Markus :D

    markushettmann schrieb:

    Also ich meine die Zeile finden ist kein Problem aber das replacen???


    Schau Dir den folgenden Code mal an:

    VB.NET-Quellcode

    1. ' 3 Gruppen: Suchwort, Spaces, folgende Zahl
    2. Dim rgx As New Regex("(Baum)(\s+)(\d+)")
    3. ' genau 1x ersetzen durch Gruppe 1+2 und Ersatzzahl
    4. Dim output As String = rgx.Replace(input, "${1}${2}10", 1)

    Sucht Dir das 1. Auftreten des Wortes "Baum" gefolgt von einer beliebigen Anzahl Leerzeichen und einer beliebigen Zahl und ersetzt dann die Zahl durch "10".

    Nicht abgefragt wird die Bedingung dass Baum am Anfang der Zeile stehen muss ...
    Prima, dann schieb ich doch den Code mit der Abfrage auf Zeilenanfang auch noch nach, auch wenn es vermutlich nicht mehr gebraucht wird:

    VB.NET-Quellcode

    1. Dim rgx As New Regex("^(Baum)(\s+)(\d+)", RegexOptions.Multiline)
    2. ' genau 1x ersetzen durch Gruppe 1+2 und Ersatzzahl
    3. Dim output As String = rgx.Replace(input, "${1}${2}10", 1)
    okay da hab ich glatt noch ne Frage:D
    Wie kann ich denn bitte eine Variable im Regex benutzen???

    VB.NET-Quellcode

    1. Dim rgx As New Regex("(Baum)(\s+)(\d+)")
    2. Dim output As String = rgx.Replace(RichTextBox1.Text, "${1}${2}" & NumericUpDown1.Value, 1)

    Also Baum als ne variable.