[ Zidar @ 08.04.2009. 21:48 ] @
Ima li neko funkciju ili nesto sto izvlaci brojeve iz teksta:

Code:

I have                            I want
---------------------------------
'Text blah blah 32 blah'      32
'Abcde 598     ---'                  598

[ domaci_a_nas @ 08.04.2009. 23:34 ] @
Is this what you want?
Code:
Public Function IzvuciBrojeve(strKojiTekst As String) As String
Dim I As Integer
Dim strSlovo As String
Dim bytCode As String
Dim blnUbaciSpace As Boolean
Dim blnUbaciZarez As Boolean
Dim strDecimala As String
blnUbaciZarez = True


For I = 1 To Len(strKojiTekst)

strSlovo = Mid(strKojiTekst, I, 1)

If InStr(1, "0123456789", strSlovo) > 0 Then
IzvuciBrojeve = IzvuciBrojeve & strDecimala & strSlovo
strDecimala = ""
blnUbaciSpace = True
GoTo NextI
End If

If (strSlovo = "," Or strSlovo = ".") And blnUbaciSpace Then
If blnUbaciZarez = False Then GoTo NextI
blnUbaciZarez = False
strDecimala = strSlovo
GoTo NextI
End If


If Asc(strSlovo) = 13 Then
IzvuciBrojeve = IzvuciBrojeve & vbCrLf
blnUbaciSpace = False
GoTo NextI
End If


If blnUbaciSpace Then
blnUbaciZarez = True
strDecimala = ""
IzvuciBrojeve = IzvuciBrojeve & " "
blnUbaciSpace = False
End If

NextI:
Next I

IzvuciBrojeve = RTrim(IzvuciBrojeve)
End Function
Za tekst od jedan kb joj treba oko 6 hiljaditinki, možda sam se malo zaneo, ali eto, radi. Nisam baš morao da vodim računa i o decimalnim zarezima i koji je u okviru broja a koji nije, ali eto za mog druga Zidara da se uradi kako valja Radi i sa multiline tekstom i razdvaja dva broja koja prepozna sa space...

Primer:
Code:
? IzvuciBrojeve ("Zdravo draga, zovi me na broj .123..45.67 pre podne, a uveče na 1234")

Rezultat:
Code:
123.4567 1234

[ Zidar @ 09.04.2009. 14:53 ] @
Hvala
[ Zidar @ 09.04.2009. 15:10 ] @
Ima jedan problem. Ako su briojevi negativni, ne izvlaci minus. Ono sto meni treba i nema negativnih brojeva, ali ima smisla poboljsati funkciju. Inace radi brzo, mnogo brze nego sto bi covek ocekivao. Vidi zakaceni primer, kveri na tabeli od 10,000 redova izvrsio se trenutno.