Wert aus einem String ermitteln

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Wert aus einem String ermitteln

    Hallo zusammen,

    ich möchte aus einem String die Zahl raus filtern.
    Der String sieht aktuell so aus >> Bsp.: 3,48 €

    Mit einer Function habe ich das auch schon einigermaßen geschafft, aber nur die erste Zahl vor dem Komma.

    Meine Function sieht wie folgt aus:

    VB.NET-Quellcode

    1. Private Function ExtractNumber(str As String) As Long
    2. Dim i As Byte, ii As Byte
    3. For i = 1 To Len(str)
    4. If IsNumeric(Mid(str, i, 1)) Then Exit For
    5. Next i
    6. For ii = i To Len(str)
    7. If Not IsNumeric(Mid(str, ii, 1)) Then Exit For
    8. Next ii
    9. ExtractNumber = Mid(str, i, Len(str) - (ii - i))
    10. End Function


    Den Wert meines Strings wird so abgespeichert

    VB.NET-Quellcode

    1. Dim strAusgabe As String
    2. strAusgabe = My.Settings.aenderung 'hier steht dann ein bestimmter Wert Bsp.: 3,48 €
    3. Label5.Text = ExtractNumber(strAusgabe)


    Also wenn wir das so machen wie ich es jetzt gemacht habe, kommt leider nur bei Label5 >> 3 << herraus.

    Kann mir jemand helfen wie ich es schaffe ... Bsp.: >> 3,48 << herrausbekomme ?

    Vielen Dank schon mal.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hallo PlatinSecurity,
    eine Variable besser nicht Str nennen, das ist
    ein reserviertes Basicwort. Der Rückgabewert
    der Function darf nicht vom Typ Long sein, da
    Long nur ganzzahlige Werte darstellt.
    Probier' mal dies:

    Visual Basic-Quellcode

    1. Private Function ExtractNumber(Txt As String) As Double
    2. Dim i As Long
    3. For i = 1 To Len(Txt)
    4. If IsNumeric(Mid$(Txt, i, 1)) Then Exit For
    5. Next i
    6. ExtractNumber = Val(Replace(Mid$(Txt, i), ",", "."))
    7. End Function
    Gruss,

    Neptun
    Cool danke, das hat mir weitergeholfen.
    Wenn ich zu dem Thema noch ein Fehler finde oder eine
    Frage habe, werde ich hier noch mal drauf Antworten.

    Aber bis dahin erst mal ein dickes Danke schön :D