Überprüfen ob eine Zahl in einem Text steht.

  • VB.NET

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

    Überprüfen ob eine Zahl in einem Text steht.

    Hallo,

    Ich habe ein kleines Problem. Ich schreibe derzeit an einem Programm das von einer Website einen bestimmten Text ausliest. Dies ist ja ansich nicht das Problem, aber in dem Text steht auch eine Zahl, die unendlichlang sein kann. Nun möchte ich natürlich nicht 10000 ElseIf in meinem Programm haben sondern ein Befehl einbauen, der abfragt ob eine Zahl im Text vorhanden ist.

    Kurzes Beispiel:

    Der Text lautet man Anfang "Stufe 2" die "2" kann aber jede beliebige andere Zahl sein, wie zum Beispiel die Zahl: "163"
    Ich suche daher nach einer Möglichkeit zu überprüfen ob in dem Text eine Zahl steht. Zu beachten ist, dass immer eine Zahl nach "Stufe" steht.

    Ich hoffe mir kann jemand bei meinem kleinen Problem helfen.

    Mit freundlichen Grüßen

    Probber
    Hey, also

    Du importierst System.Text.RegularExpressions


    Und dann kannst Du das so machen:

    VB.NET-Quellcode

    1. If Regex.IsMatch(DeinString, "\d") Then
    2. 'Im String kommt eine Ziffer vor
    3. Else
    4. 'Im String kommt keine Ziffer vor
    5. End If


    Du kannst auch prüfen ob eine bestimmte Struktur(die Du sogar dynamisch abfragen kannst) im String enthalten ist.

    Z.b mit

    VB.NET-Quellcode

    1. If Regex.IsMatch(DeinString, "Stufe \d+")
    dann prüfst Du, ob der String das Muster "Stufe " + irgendeine Zahl enthält.
    Wie wärs mit: "Einfach mal den ersten Post richtig lesen und verstehen" ?!
    Zu beachten ist, dass immer eine Zahl nach "Stufe" steht.

    VB.NET-Quellcode

    1. Dim i As Integer = 0
    2. If Integer.TryParse("Stufe 2".Split(" "c)(1), i) Then
    3. Console.WriteLine(i)
    4. End If

    Oder falls sich "Stufe 2" in einem längeren Text befindet:

    VB.NET-Quellcode

    1. Dim r As New Regex("(?<=Stufe\s)\d+")
    2. Dim s As String = "Stufe 197386738blublublub"
    3. Dim i As Integer = 0
    4. If Integer.TryParse(r.Match(s).Value, i) Then
    5. Console.WriteLine(i)
    6. End If

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Rinecamo“ ()

    Ich bin davon ausgegangen, dass du die Zahl haben willst und nicht nur prüfen ob da eine ist. Zum Prüfen müsste es dann ja reichen zu schauen ob das erste Zeichen nach "Stufe " eine Zahl ist, da kann dir die Funktion isNumeric weiter helfen.

    VB.NET-Quellcode

    1. Dim text As String = "blubb blubb Stufe 1452 blubb blubb blubb"
    2. If IsNumeric(text(text.IndexOf("Stufe ") + "Stufe ".length + 1)) Then
    3. 'ist zahl
    4. Else
    5. 'ist keine zahl
    6. End If


    text(...) gibt das Zeichen an der angegebenen Stelle im Text zurück was dann von isNumeric ausgewertet wird.
    text.IndexOf("Stufe ") gibt die Position von "Stufe " an, dazu wird dann mit
    "Stufe ".length die Länge des Suchtextes addiert und die
    + 1 ist für das erste Zeichen nach dem Suchbegriff.

    Kevin Hombre schrieb:

    Hey, also

    Du importierst System.Text.RegularExpressions


    Und dann kannst Du das so machen:

    VB.NET-Quellcode

    1. If Regex.IsMatch(DeinString, "\d") Then
    2. 'Im String kommt eine Ziffer vor
    3. Else
    4. 'Im String kommt keine Ziffer vor
    5. End If


    Du kannst auch prüfen ob eine bestimmte Struktur(die Du sogar dynamisch abfragen kannst) im String enthalten ist.

    Z.b mit

    VB.NET-Quellcode

    1. If Regex.IsMatch(DeinString, "Stufe \d+")
    dann prüfst Du, ob der String das Muster "Stufe " + irgendeine Zahl enthält.



    Ich werde deine Methode mal versuchen und danke für die ganzen Antworten