28. december 2002 - 17:30Der 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 :).
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
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
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.
Jeg er ked af jeg først får lukket nu. Jeg dele point ligeligt.
/Casper
Synes godt om
Ny brugerNybegynder
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.