Zahlen Filtern

F_P_aus_K

Erfahrenes Mitglied
Hallo,

weis jemand ob es eine Möglichkeitz gibt aus dem Text QRO312X12.5 (abc) nur die Zahlen als Double rausfiltern kann (das ergebnis währe wert1=312, wert2=15.5)

vielen Dank

Frank
 
Spontan würde ich die Strings manuell parsen und jeden Char überprüfen. Glaube nicht, dass dafür fertige Funktionen implementiert wurden.
 
vielen Dank.

Mit etwas nachdenken hab ich mir soetwas gebastelt:
1. Schleife analysiert die Arraytiefe der Zahlenarrays
2. Schleife schreibt die Zahlen in die Zahlenarray

(das alles für zwei Double Werte in einem Text )

zum Schluss das Array als String zusammenfügen und fertig.

und wenn mir jetzt jemand mit nem Einzeiler kommt, dem Spring ich durch seinem Monitor. :)

Gruss
Frank

Code:
    Dim Eingabe As String = "asd123er34.56gg()"
    Dim EingabeArray()
    Dim AusgabeArray_1()
    Dim AusgabeArray_2()

    Dim i
    Dim Zahlnummer As Integer = 1
    Dim ErsteZahl As Boolean = False
    Dim ZweiteZahl As Boolean = False
    Dim IstZahl As Boolean = False
    Dim Hilfszähler1
    Dim Hilfszähler2

    For i = 0 To Eingabe.Length
      ReDim EingabeArray(i)
    Next
    For i = 0 To Eingabe.Length
      EingabeArray(i) = Trim(Mid$(Eingabe, i + 1, 1))
    Next

    For i = 0 To Eingabe.Length
      Dim i2
      Dim i3

      For i2 = &H30 To &H39
        If Zahlnummer = 1 And (EingabeArray(i) = Microsoft.VisualBasic.ChrW(i2) Or EingabeArray(i) = Microsoft.VisualBasic.ChrW(&H2E)) Then
          i3 += 1
          ReDim AusgabeArray_1(i3 - 1)
          If i3 = 1 Then
            ErsteZahl = True
          End If
          Hilfszähler1 += 1
          Exit For
        End If
        If Zahlnummer = 2 And (EingabeArray(i) = Microsoft.VisualBasic.ChrW(i2) Or EingabeArray(i) = Microsoft.VisualBasic.ChrW(&H2E)) Then
          i3 += 1
          ReDim AusgabeArray_2(i3 - 1)
          If i3 = 1 Then
            ZweiteZahl = True
          End If
          Hilfszähler1 += 1
          Exit For
        End If

      Next

      If ErsteZahl = True Then
        Hilfszähler2 += 1
        If Hilfszähler1 <> Hilfszähler2 Then
          Zahlnummer += 1
          ErsteZahl = False
          Hilfszähler1 = 0
          Hilfszähler2 = 0
          i3 = 0
        End If
      End If
      If ZweiteZahl = True Then
        Hilfszähler2 += 1
        If Hilfszähler1 <> Hilfszähler2 Then
          Zahlnummer += 1
          ZweiteZahl = False
          Hilfszähler1 = 0
          Hilfszähler2 = 0
          i3 = 0
        End If
      End If
    Next
    Zahlnummer = 1
    For i = 0 To Eingabe.Length
      Dim i2
      Dim i3

      For i2 = &H30 To &H39
        If Zahlnummer = 1 And (EingabeArray(i) = Microsoft.VisualBasic.ChrW(i2) Or EingabeArray(i) = Microsoft.VisualBasic.ChrW(&H2E)) Then
          i3 += 1
          AusgabeArray_1(i3 - 1) = EingabeArray(i)
          If i3 = 1 Then
            ErsteZahl = True
          End If
          Hilfszähler1 += 1
          Exit For
        End If
        If Zahlnummer = 2 And (EingabeArray(i) = Microsoft.VisualBasic.ChrW(i2) Or EingabeArray(i) = Microsoft.VisualBasic.ChrW(&H2E)) Then
          i3 += 1
          AusgabeArray_2(i3 - 1) = EingabeArray(i)
          If i3 = 1 Then
            ZweiteZahl = True
          End If
          Hilfszähler1 += 1
          Exit For
        End If

      Next

      If ErsteZahl = True Then
        Hilfszähler2 += 1
        If Hilfszähler1 <> Hilfszähler2 Then
          Zahlnummer += 1
          ErsteZahl = False
          Hilfszähler1 = 0
          Hilfszähler2 = 0
          i3 = 0
        End If
      End If
      If ZweiteZahl = True Then
        Hilfszähler2 += 1
        If Hilfszähler1 <> Hilfszähler2 Then
          Zahlnummer += 1
          ZweiteZahl = False
          Hilfszähler1 = 0
          Hilfszähler2 = 0
          i3 = 0
        End If
      End If
    Next
    Zahlnummer = 1

    Dim Wert1 As Double = Join(AusgabeArray_1, "")
    Dim Wert2 As Double = Join(AusgabeArray_2, "")
 
Ich denke das sich das Problem mit Reglären Ausdrücken viel Eleganter lösen lässt.
 

Neue Beiträge

Zurück