Wattengård Skrevet 13. januar 2006 Del Skrevet 13. januar 2006 Jeg driver å programmerer litt på en filparser som skal parse vedlagte fil. Hva er enkleste måten å gjøre det på? Akkurat nå driver jeg å tuller med stringbuffer og splitting på linjeskift etc. Det må da finnes noe enklere? Bruker java men pseudokode kan vel også gå greit. Evt bare et konsept -C- Lenke til kommentar
charlie di meola Skrevet 13. januar 2006 Del Skrevet 13. januar 2006 kanskje ser jeg dårlig men isåfall hvor er denne filen du snakker om? Lenke til kommentar
Wattengård Skrevet 18. januar 2006 Forfatter Del Skrevet 18. januar 2006 Ohyea... Morgenstund osv. Kan jo beskrive filen litt også: Linje 1: diverse strenger separert med "|" Linje 2: diverse atributter separert med " " Linje 3: vekt (streng) Linje 4: høyde (streng) Linje 5: antall moves Fra linje 6 og utover er formatet: Linje 1: streng Linje 2: streng Linje 3: streng Linje 4: streng Linje 5: diverse atributter separert med " " Disse 5 linjene beskriver 1 "move". De gjentas like mange ganger som det er antall moves i fila. Helt til slutt er det en linje som inneholder diverse strenger separert med "|" Hvordan vil enkleste måte å lese denne fila på være? -C- cactus_jack.zim.txt Lenke til kommentar
dayslepr Skrevet 18. januar 2006 Del Skrevet 18. januar 2006 (endret) (with-input-from-string (ss (format nil (mkstr "a|b|c~%" "1 2 3~%" "72~%" "174~%" "2~%" "move 1, line 1~%" "move 1, line 2~%" "move 1, line 3~%" "move 1, line 4~%" "4 5 6~%" "move 2, line 1~%" "move 2, line 2~%" "move 2, line 3~%" "move 2, line 4~%" "7 8 9~%" "d|e|f~%"))) (format t "diverse strenger: ~A~%" (cl-ppcre:split "\\|" (read-line ss))) (format t "diverse attributer: ~A~%" (cl-ppcre:split "\\s" (read-line ss))) (format t "vekt: ~A~%" (read-line ss)) (format t "høyde: ~A~%" (read-line ss)) (let ((num-moves (read-from-string (read-line ss)))) (format t "antall moves: ~A~%" num-moves) (dotimes (i num-moves) (format t "move: ~A~%" (read-line ss)) (format t "move: ~A~%" (read-line ss)) (format t "move: ~A~%" (read-line ss)) (format t "move: ~A~%" (read-line ss)) (format t "diverse attributter: ~A~%" (cl-ppcre:split "\\s" (read-line ss))))) (format t "helt til slutt: ~A~%" (cl-ppcre:split "\\|" (read-line ss)))) ..gir.. diverse strenger: (a b c)diverse attributer: (1 2 3) vekt: 72 høyde: 174 antall moves: 2 move: move 1, line 1 move: move 1, line 2 move: move 1, line 3 move: move 1, line 4 diverse attributter: (4 5 6) move: move 2, line 1 move: move 2, line 2 move: move 2, line 3 move: move 2, line 4 diverse attributter: (7 8 9) helt til slutt: (d e f) til stdout edit: hm.. koden blir så elendig indentert her .. slik skal den se ut: http://paste.lisp.org/display/15805 Endret 19. januar 2006 av dayslepr Lenke til kommentar
Wattengård Skrevet 19. januar 2006 Forfatter Del Skrevet 19. januar 2006 Mjo... Nå kan ikke jeg lese lisp så veldig godt. Men det ser ikke ut som om den koden der tar hensyn til at det kan være flere moves? Jeg skulle kanskje vært tydeligere med å nevne at det er ikke den der bestemte filen jeg vil lese inn. Men filer på det formatet der. -C- Lenke til kommentar
dayslepr Skrevet 19. januar 2006 Del Skrevet 19. januar 2006 jo, det tar den hensyn til - og den leser filer i «det formatet der» Lenke til kommentar
Wattengård Skrevet 19. januar 2006 Forfatter Del Skrevet 19. januar 2006 Ja nå tror jeg faktisk jeg ser det også Men Lisp er fortsatt ikke min sterkeste side. Men konseptet skal vel forsåvidt kunne brukes i Java/C# også.. Kan du ikke kommentere koden litt? Hvordan de underliggende kallene bruker den første setningen iallefall. Det er der jeg stusser litt. -C- Lenke til kommentar
dayslepr Skrevet 19. januar 2006 Del Skrevet 19. januar 2006 kan si det slik at den fyller variabelen `ss' med tekst-innholdet som skal parses .. og videre ser du at read-line kalles mot `ss' read-line tar i mot en parameter av typen stream, og `ss' er altså en stream .. på samme vis som en åpen fil også er en stream tenk deg at `ss' i stedet var en peker mot en fil - resten av koden under for parsing ville blitt 100% lik Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå