20. august 2006 - 10:38Der er
34 kommentarer og 2 løsninger
Splitte streng
Hej,
Har en sjov opgave. Jeg har en streng fra et sygesikringskort som jeg skal have delt op i Fornavn/Mellemnavn, Efternavn, Adresse, Postnr, CPR-Nr
Det er noget med at fra Tegn 2 frem til ^ er Efternavn og fra ^ og frem til tegn nummer 35 og fra 36 til 69 er det adressen og 73 til 76 er postnr så kommer der et ?; og tegn nummer 9 - 18 efter ?; er CPRnr.
De nemme er selvfølgelig når det bare er fra Tegn x til x, men når den skal stoppe lige før ^ hvordan gør man det ?
Eller hvis du har lyst må du gerne lave hele funktionen.
Når du køre scriptet kan du se hvordan arrayet er indrettet. $r[0][1] er efternavnet på den første person, $r[0][2] er fornavnet osv osv.
Men problemet er lidt at finde ud af hvornår en ny del af strengen starter og stopper, når det kun er afgrænset med mellemrum. I min kode stopper den når der er 2 mellemrum eller mere.
Ved nærmere eftertanke er det nok ikke så smart at lave den trim() på postnummeret. Den vil jo også tage eventuelle nuller fra enden af postnummeret, som i 2000 Frederiksberg.
Normalt har jeg intet imod regulære udtryk, men hver ting til sit formål.
Når man har data, hvor pladserne er fastlagt, bør man (efter min mening) bruge substr() til at udtrække delene. Derefter er der kun særtilfældet med navnet, og dette klare en explode() nemt.
Postnummer er der. Jeg har før spørgt om du ikke selv kunne finde ud af at udvide koden til CPR-nummer, men du har ikke rigtigt svaret. Des dkulle ellers være nemt nok - blot noget med at tælle frem til hvor det første ciffer starter, og så bruge en substr() til at finde "derfra" og så de næste 10.
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.