RegEx Liste erstellen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von TheGameSiders.

    RegEx Liste erstellen

    Hi.

    Ich möchte gerne ganze Zahlen in einem String abfragen.
    Probiert:

    VB.NET-Quellcode

    1. Dim Liste as String = "10 20 30 40 110"
    2. If Liste.Contains("10") then
    3. msgbox("10")
    4. End If


    Das geht auch, nur leider ab 110 z.B. wird die Aktion 2 mal ausgeführt, da es einmal die 10 gibt, und einmal die 10 in der 110.
    Das will ich nicht.
    Ich will ganze Zahlen abfragen in diesem String, und keine Teile.

    Nun hab ich von RegEx gelesen, nur leider weiß ich nicht genau, wonach ich suchen soll, bzw. die Tutorials im Forum brachten nicht mein Ziel.
    Muss ich es splitten?
    Gibt es in Regex keine einfache Abfrage für sowas?
    Bzw. wie frag ich sonst ganze Zahlen ab, und nicht nur allgemein?
    Danke :)
    Wie wäre es mit dem Like-Operator, das ist bissl einfacher als RegEx.IsMatch, aber halt nicht so funktionsreich und wenn ich mich recht entsinne aus VB6, also will ich dich nicht dazu anstiften. Alternative ist dann RegEx.IsMatch.
    [VB.NET] Der 'Like'-Operator, eine nützliche kleine RegEx.IsMatch-Alternative
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    TheGameSiders schrieb:

    VB.NET-Quellcode

    1. Dim Liste as String = "10 20 30 40 110"
    Wenn Dein String genau dieses Format hat, splitte ihn am Leerzeichen und teste die einzelnen Resultatstrings.

    VB.NET-Quellcode

    1. Dim parts = Liste.Split(" ")
    2. For Each part in parts
    3. ' was testen
    4. Next
    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!
    Hi,

    doch, in RegEx gibt's sogar eine ganz einfache Abfrage: [0-9]+
    Du musst dir halt alle Ergebnisse abfragen:
    Beispiel:
    - Form1
    - Richtextbox1 für Suchausdruck
    - Richtextbox2 für zu durchsuchenden Text
    - Listbox für Ergebnisse:

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Public Class Form1
    3. Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
    4. Try
    5. ListBox1.Items.Clear()
    6. Dim mc As MatchCollection
    7. mc = Regex.Matches(RichTextBox2.Text, RichTextBox1.Text, RegexOptions.IgnoreCase)
    8. For i As Integer = 0 To mc.Count - 1
    9. ListBox1.Items.Add(mc(i).Value.ToString)
    10. Next
    11. Catch ex As Exception
    12. End Try
    13. End Sub
    14. End Class


    Ansonsten finde ich kannst auch einfacher machen indem du bei Leerzeichen splittest. Aber da ich ja nicht weiß ob es immer Leerzeichen sind, hab ich die RegEx-Möglichkeit gepostet.


    Link :thumbup:
    Hello World