Avatar billede mik28 Seniormester
06. juni 2002 - 10:50 Der er 21 kommentarer og
1 løsning

At dele en string op

Hej alle eksperter

Jeg skal lave et stykke kode som kan læse en fil. Jeg kender strukturen på filen. Det jeg skal opnå er at få delt den op og lagt data i en DB. Strukturen ser således ud ;.;fornavn;.;efternavn;.;adresse;.; o.s.v. Jeg er kommet hertil

<%
Set fso = CreateObject("Scripting.FileSystemObject")
    Set stream = fso.OpenTextFile(Server.Mappath("fil.txt"), 1)
    If not stream.AtEndOfStream Then
        content = stream.ReadAll
    End if
    set stream = nothing
    set fso = nothing
    Response.write(content)
%>

Så har jeg ligesom content. Jeg skal finde den første forekomst af ;.; også den næste. SÅ skal jeg tage det som ligger i mellem og smide i en variable.





Avatar billede mik28 Seniormester
06. juni 2002 - 10:52 #1
Hvem har en god idé til hvordan jeg slipper afsted med det ;-)
Avatar billede cbp Nybegynder
06. juni 2002 - 10:55 #2
Her vil Split() vist lette arbejdet:

myArray = Split(Content, ";.;")
Avatar billede mik28 Seniormester
06. juni 2002 - 11:04 #3
okay det lyder spændende
Avatar billede mik28 Seniormester
06. juni 2002 - 11:15 #4
Jeg ved ikke hvor stor filen er. Jeg modtager det sådan her

BEGIN:VCARD
FN:Svend Bendt
ORG:;Etellerandet
TEL;WORK:12345678
TITLE:etellerandet
EMAIL;WORK;PREF;NGW:svend@dd.dk
END:VCARD
Avatar billede cbp Nybegynder
06. juni 2002 - 11:17 #5
Ok, det er er jo forholdvist langt fra det filformat du beskrev i første omgang.
Avatar billede tmceu Praktikant
06. juni 2002 - 11:19 #6
Hvad med dette:

Set fso = CreateObject("Scripting.FileSystemObject")
Set stream = fso.OpenTextFile(Server.Mappath("fil.txt"), 1)

Do Until stream.AtEndOfStream

content = stream.ReadLine
myArr = Split(Content, ";.;")

For i = o To UBound(myArr)
  response.write myArr(i) ' <- hver enkelt felt
Next

Loop

set stream = nothing
set fso = nothing
Response.write(content)
Avatar billede mik28 Seniormester
06. juni 2002 - 11:21 #7
jeg ved det godt. Sorry
Avatar billede mik28 Seniormester
06. juni 2002 - 11:32 #8
Det ser fint ud. Jeg ved at der er 4 elementer i hver række. Hvordan for jeg lagt dem ind i nogle variable så jeg efterfølgende kan smide dem i en DB?
Avatar billede mik28 Seniormester
06. juni 2002 - 11:33 #9
De skal jo have forskellige navne
Avatar billede tmceu Praktikant
06. juni 2002 - 11:36 #10
Set fso = CreateObject("Scripting.FileSystemObject")
Set stream = fso.OpenTextFile(Server.Mappath("fil.txt"), 1)

Do Until stream.AtEndOfStream

content = stream.ReadLine
myArr = Split(Content, ";.;")

' enten denne:
strNavn = myArr(0)
strOrg = myArr(1)
' o.s.v.

' Eller denne:
' strSQL = "INSERT INTO Tabel(Navn, Org....VALUES("
' strSQL = strSQL & "'" & myArr(0) & "',"
' strSQL = strSQL & "'" & myArr(1) & "',"
' o.s.v.

'objConn.Execute(strSQL)

Loop

set stream = nothing
set fso = nothing
Avatar billede mik28 Seniormester
06. juni 2002 - 11:54 #11
sådan her ???

Set fso = CreateObject("Scripting.FileSystemObject")
Set stream = fso.OpenTextFile(Server.Mappath("filer/fil.vcf"), 1)

Do Until stream.AtEndOfStream

content = stream.ReadLine
myArr = Split(content, ";.;")

' enten denne:
dim strFornavn, strEfternavn, strAfdeling, strTlf

strFornavn  = myArr(0)
strEfternavn = myArr(1)
strAfdeling  = myArr(2)
strTlf      = myArr(3)

Loop

set stream = nothing
set fso = nothing
Avatar billede mik28 Seniormester
06. juni 2002 - 11:55 #12
glem databaseforbindelsen
Avatar billede tmceu Praktikant
06. juni 2002 - 12:00 #13
OK
Avatar billede mik28 Seniormester
06. juni 2002 - 12:15 #14
Lige nu er udfordringen at få delt filen op i variable på den rigtige måde :-). Det er ikke let :-), i hvert tilfælde ikke for mig :-(
Avatar billede tmceu Praktikant
06. juni 2002 - 12:20 #15
Var der sidste en konstatering eller ?

Hvis du skal have mere hjælp, må du lige prøve at poste de første 2 komplette poster fra filen UREDIGERET her.
Avatar billede mik28 Seniormester
06. juni 2002 - 12:28 #16
Jeg prøver bare at komme på sporet af hvad jeg skal gøre, det er såmend det hele. Her er data som jeg modtager det

BEGIN:VCARD
VERSION:2.1
X-GWTYPE:USER
FN:Martin Andersen
TEL;WORK:45258564
ORG:;Teknik
TEL;PREF;FAX:45253654
EMAIL;WORK;PREF;NGW:MA@mail.dk
N:Andersen;Martin
TITLE:Tekniker
END:VCARD

BEGIN:VCARD
VERSION:2.1
X-GWTYPE:USER
FN:Hans Jensen
TEL;WORK:45256589
ORG:;Salg
TEL;PREF;FAX:45253654
EMAIL;WORK;PREF;NGW:HJ@mail.dk
N:Jensen;Hans
TITLE:Saelger
END:VCARD
Avatar billede tmceu Praktikant
06. juni 2002 - 12:45 #17
Prøv denne:

Set fso = CreateObject("Scripting.FileSystemObject")
Set stream = fso.OpenTextFile(Server.Mappath("filer/fil.vcf"), 1)

Do Until stream.AtEndOfStream

content = stream.ReadLine
myArr = Split(content, ";.;")

strPost = ""

If myArr(i) = "BEGIN" Then ' ny løkke


    Do

        strTemp = stream.ReadLine
        newArr = Split(strTemp, ";.;")

        If newArr(0) = "END" Then Exit Do

        If strPost = "" Then
            strPost = newArr(1)
        Else
            strPost = strPost & "," & newArr(1)
        End If
   
    Loop

End If

    lastArr = Split(strPost, ",")

    dim strFornavn, strEfternavn, strAfdeling, strTlf

    strFornavn  = lastArr(0)
    strEfternavn = lastArr(1)
    strAfdeling  = lastArr(2)
    strTlf      = lastArr(3)

Loop

set stream = nothing
set fso = nothing
Avatar billede mik28 Seniormester
06. juni 2002 - 15:09 #18
øm, det virker ikke :-(
Avatar billede mik28 Seniormester
06. juni 2002 - 15:11 #19
jeg bruger jo heller ikke ;.; mere
Avatar billede tmceu Praktikant
06. juni 2002 - 15:17 #20
Du kunne jo evt. fortælle hvad der sker, frem for blot at konstatere at det ikke virker....
Avatar billede mik28 Seniormester
07. juni 2002 - 08:23 #21
Du har helt ret *LOL*, hav en god dag. Jeg får bare at vide at siden ikke kan vises. Hvordan finder man "indexOf" i asp, og hvad tager den af parametre?
Avatar billede tmceu Praktikant
07. juni 2002 - 18:20 #22
indexOf kan anvendes i ASP, hvis du skriver dine sider med JavaScript. VBScript's tilsvarende hedder InStr.
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