Avatar billede melao Nybegynder
28. december 2002 - 17:30 Der er 7 kommentarer og
3 løsninger

Finde tal i streng

Hejsa,

jeg har en streng hvor jeg skal finde to tal (X og Y, da de ændre sig i størrelse).

"Julen er ikke en 100.000 år gammel tradition, men 234.555 dage gammel tardition. Der er".

Jeg skal have så have fat i tallet 100.000 og lagt det til 234.555.
Jeg er kommet så langt at jeg lave en Replaceer alle . væk i strengen, ellers er jeg helt blank :).

/Casper
Avatar billede topydopy Nybegynder
28. december 2002 - 17:48 #1
Står tallene altid samme sted i strengen. I såfald brug f.eks. Left,Mid,Right
Avatar billede melao Nybegynder
28. december 2002 - 18:01 #2
topydopy nej desværre gør de ikke det.
Avatar billede joern Nybegynder
28. december 2002 - 20:03 #3
Eksperten har vist været ned i en times tid.  Heldigvis havde jeg taget mit svar over i en editor, så jeg ikke behøvede at skrive forfra!!!

Hej.

Jeg kan angive en metode, men måske kan det gøres fiksere.

Læs ét tegn ad gangen fra strengens begyndelse, og test om det er et ciffer.  Tæl samtidig op hvor mange tegn du har læst (var a).
Når du når første ciffer så tæl hvor mange tegn derefter, der stadig er cifre (var b).

Når du nu når et tegn der ikke er et ciffer (mellemrum formentlig) så kan du splitte stregen således:    Fra 1 til a + b / fra b til slut.
Første tal er val(mid(streng, a, b))
Andet tal er val(mid(streng, b))

For at teste om et tegn er numerisk anvendes: IsNumeric

Dim a, b, c, d as Integer

For d = 0 to Len(streng)
  If Isnumeric(Mid(streng,d ,1 ) then
  a = d -1
  b = 1
Next d

For d = a to Len(streng) - a
  If Isnumeric(Mid(streng, d, 1) then
    b = b + 1
    else
    Exit For
  end if
Next d

Er du på sporet?

M.v.h.  Jørn
Avatar billede topydopy Nybegynder
28. december 2002 - 20:12 #4
. er ikke et ciffer. Du får kun 100 og 234 fra melaos streng.
Avatar billede knico Nybegynder
28. december 2002 - 21:53 #5
Denne kode kan du bruge uafhængigt af hvor mange tal du har i strengen:

Private Sub Command1_Click()
varStr = "Julen er ikke en 100.000 år gammel tradition, men 234.555 dage gammel tardition. Der er"

varStr = Replace(varStr, ".", "")

For i = 1 To Len(varStr)
    If Asc(Mid(varStr, i, 1)) > 47 And Asc(Mid(varStr, i, 1)) < 58 Then
        varTal = varTal & Mid(varStr, i, 1)
        tal = True
    ElseIf tal = True Then
        varTal = varTal & ";"
        tal = False
    End If
Next

arrTal = Split(varTal, ";")

For j = 0 To UBound(arrTal)
    sumTal = sumTal + Val(arrTal(j))
Next

MsgBox sumTal

End Sub
Avatar billede joern Nybegynder
28. december 2002 - 23:02 #6
Eksperten er noget ustabil i aften.  Igen kunne jeg ikke aflevere en kommentar i laaaang tid.

topydopy>>
Ja, hvis strengene indeholder punktum bliver det mere sejt at adskille, men dog muligt.  Jeg håber at tallene i sp. kun er et tænkt eksempel.  Men det får vi opklaret når Melao vender tilbage.

Da mit svar er indsat som kommentar (jeg var uopmærksom 2. gang) gør jeg dette indlæg til mit svar.

Knico>>  Replace er en god kommando, desværre har jeg den ikke i min aldrende VB5.

M.v.h.  Jørn
Avatar billede topydopy Nybegynder
28. december 2002 - 23:15 #7
Ja eksperten er temmelig ustabil. Iøvrigt skal der ikke ændres meget i din kode før, at man får tallene.
Avatar billede melao Nybegynder
29. december 2002 - 17:21 #8
Hejsa,

Jeg lavede en midlertidlig løsning med en spandfuld Replace'er :)

Vender tilbage når jeg har fået testet jeres forslag.

/Casper
Avatar billede martin_moth Mester
20. januar 2003 - 17:21 #9
Tar' en test altid ca. 3 uger? ;o)
Avatar billede melao Nybegynder
19. februar 2003 - 15:02 #10
Hej igen,

  Jeg er ked af jeg først får lukket nu. Jeg dele point ligeligt.

/Casper
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester