Avatar billede dd_ns Nybegynder
14. maj 2003 - 11:17 Der er 13 kommentarer og
1 løsning

stykke af tekst

jeg har en line med følgende tekst...

oste klokker 12345676 pedersen med mere 17-12-01 12:00:00

her skal jeg have oste klokker over i 1 variabel
og
alle de efterfølgende sammensatte tal over i en anden variabel

her efter har en en anden tekst med f.eks

345424 pedersen og findus

her skal jeg have alle de sammensatte tal ned i en variabel og ligeledes alt efterfølgende efter de tal i en anden...

Hvordan gør jeg det?
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 11:23 #1
Du kan bruge instr() og mid()...
Avatar billede dd_ns Nybegynder
14. maj 2003 - 11:26 #2
Kan du komme med et eksempel
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 11:33 #3
Brug værdi=InStr(1, "oste klokker 1234", "oste") til at returnere hvor i teksten oste findes. Brug derefter værdi2=mid("dinstreng",værdi,12)="oste klokker". Du skal nok lige prøve dig lidt frem. Du kan danne nye sætninger gennem en løkkestruktur. Jeg er forøvrigt ikke sikker på om der findes en function der kan tage "oste klokker" direkte ud af din sætning!
Avatar billede dd_ns Nybegynder
14. maj 2003 - 11:34 #4
Det der er jeg med på, men teksten og tallende og deres længede kan jo variere...
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 11:36 #5
Ja, men hvis ikke du på den ene eller anden måde ved hvad disse variationer er tror jeg du får et problem.
Avatar billede dd_ns Nybegynder
14. maj 2003 - 11:37 #6
man kan vel sige nuget med alt tekst i starten, og der efter de næste tal, eller noget i den stil
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 11:46 #7
Her er en funktion som returnere et uddrag af en strieng. Brug den sammen med InStr(). Du kan også undersøge om din returværdi er numerisk for at tilsikre at du ikke blande typerne sammen, altså vis det er påkrævet...
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 11:46 #8
Her er den...

Public Function UddragAfStrengFra(psStreng As String, psFra As String) As String
Dim Længde As Long, i As Integer, Tegn As String, NytID As String, bOk As Boolean
On Error GoTo ErrH

Længde = Len(psStreng)

For i = 1 To Længde
  Tegn = Mid(psStreng, i, 1)
    If bOk = True Then GoTo Skriv
    If Not Tegn = psFra Then GoTo næste
    bOk = True
    GoTo næste
Skriv:
    If bOk = True Then NytID = NytID & Tegn
næste:
Next i

UddragAfStrengFra = Trim(NytID)

Exit Function
ErrH:
Fejl "Fejl# fsoClass.UddragAfStrengFra - streng; " & psStreng
Resume Next
End Function
Avatar billede martin_moth Mester
14. maj 2003 - 12:56 #9
ddns: Du må som det allerførste opstille regler for hvad du vil gøre, fx.

1. Put alle tegn til venstre for første tal ind i en variabel
2. Put alle sammenhængende tal der står efter den første tekst ind i en anden variabel
3. Put alt hvad der står efter disse til ind i en tredie variabel

Dernæst må du fortælle hvordan dine tekststrenge kan forventes at se ud - vil de ALTID starte med tekst osv?. Hvad skal der ske hvis der ikek er nogle tal i strengen? osv...

Dit spørgsmål kan egentligt ikke besvares som det står her, for vi mangler en masse oplysninger :o)

Men du ved jo selv hvad du vil opnå, og du kan opnå ALT hvad du måtte ønske dig mht. til at mainpulere strende med VB's indbyggede strengefunktioner. Se på Len, Left, Mid, InStr, Replace, Right og hvad du ellers kan få brug for - de er allesammen beskrevet meget grundigt på msdn.microsoft.com og i hjælpen til VB
Avatar billede dd_ns Nybegynder
14. maj 2003 - 12:58 #10
jeg lavede det lige på min egen måde, så det virker nu... JRL0469 lave lige et svar, så du kan få nogle point
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 13:00 #11
Takker, har du lyst til at dele din viden (dit resultat)...
Avatar billede dd_ns Nybegynder
14. maj 2003 - 13:03 #12
jeps...

Sub Main()
Dim conn As New ADODB.Connection
conn.Open "Driver={sql server};server=pc1287;database=test;uid=sa;pwd="
Open "c:\database.fbk" For Input As #1
conn.Execute ("delete from hotfix")



Do While Not EOF(1)
Line Input #1, ln

lnu = lnu + 1
If Asc(Left(ln, 1)) > 255 Then Exit Do
a = a + 1



If fejl = 0 Then
   
    If Left(ln, 9) = "TableData" Then fejl = 1
    If fejl = 0 Then
       
        'If MsgBox(" " & ln & " " & vbCrLf & " " & fejl & " " & vbCrLf & " " & lnu & " " & vbCrLf & " " & a & "", 4, "exit") = 6 Then Exit Do
       
        If a = 1 And Left(ln, 5) = "Table" Then str_type = "Table"
        If a = 1 And Left(ln, 4) = "Form" Then str_type = "Form"
        If a = 1 And Left(ln, 6) = "Report" Then str_type = "Report"
        If a = 1 And Left(ln, 8) = "Dataport" Then str_type = "Dataport"
        If a = 1 And Left(ln, 8) = "Codeunit" Then str_type = "Codeunit"
       
        If a = 2 Then
        ln = Replace(ln, " ", "")
        For i = 1 To Len(ln)
       
        If IsNumeric(Mid(ln, i, 1)) = False And ln <> " " Then Exit For
               
        Next
       
        'MsgBox Left(ln, i - 1)
        'MsgBox Right(ln, Len(ln) - i + 1)
        'MsgBox Len(ln)
       
       
        conn.Execute ("insert into hotfix (str_type,str_id,str_version) values('" & str_type & "', " & Left(ln, i - 1) & "  ,'" & Right(ln, Len(ln) - i + 1) & "')")
        'if MsgBox(" insert into hotfix (str_type,str_id,str_version) values('" & str_type & "', " & Left(ln, i - 1) & "  ,'" & Right(ln, Len(ln) - i + 1) & "')", 4, "exit") = 6 Then Exit Do
        ' (sql)
        End If
       
       
       
       
    End If

End If
If fejl <> 0 And fejl < 4 Then fejl = fejl + 1 Else fejl = 0

  If a = 2 Then
  a = 0
 
  End If

Loop



Close #1


End Sub
Avatar billede jrl0469 Nybegynder
14. maj 2003 - 13:06 #13
Fint nok, og jeg glemte at "svare", høhø
Avatar billede martin_moth Mester
14. maj 2003 - 13:10 #14
Jeg ville foreslå:

Find første tal (med InStr), og smid alt fra venstre til dette tal ind i en variabel1 (med Mid).

Startende fra det første tal findes det første bogstav derefter (med InStr), og alt fra første tal til første bogstav smides i variabel2 (med Mid)

Startende fra det første tal findes det første bogstav derefter (med InStr), og alt til højre for dette (med Len og Mid) smides i variabel3

Voila :o)

Dette vil ændre
  "Dette er en test, 1234, Hej med dig"
til
  variabel1 = "Dette er en test, "
  variabel2 = "1234"
  variabel3 = ", Hej med dig"

/Martin
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