/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
sortering
Fra : Morten Guldager


Dato : 02-07-02 22:03

Hejsa,

Jeg skal sortere en liste med tekststrenge som alle indeholder en
blanding af tal og bogstaver. Men jeg vil gerne have de flercifrede
tal forteren numerisk. Her kommer nogle eksempler sorteret som jeg
gerne vil have dem. I praksis bruges . til at adskille de enkelte
led i strengene, hvis det kan være til nogen hjælp. Men det vil
naturligvis være smukt hvis rutinen ikke ar afhængig af dette.

9.klonk
42.2.klonk
morten.7.guldager.76
peter.7.hansen.22
peter.20.zorglub
petersen
petersen.1

Det vil selvfølgelig være snilt med en funktion der lige passer
ind i perls eksisterende sort funktion.

Nogle fikse forslag? Ellers klapper jeg bare et eller andet juks
sammen der lige løser problemet.


/Morten

 
 
Jakob Schmidt (03-07-2002)
Kommentar
Fra : Jakob Schmidt


Dato : 03-07-02 08:01

spamtrap@mogul.dk (Morten Guldager) writes:

> Hejsa,
>
> Jeg skal sortere en liste med tekststrenge som alle indeholder en
> blanding af tal og bogstaver. Men jeg vil gerne have de flercifrede
> tal forteren numerisk. [...]
> 9.klonk
> 42.2.klonk
> morten.7.guldager.76
> peter.7.hansen.22
> peter.20.zorglub
> petersen
> petersen.1
[...]
>
> Nogle fikse forslag? Ellers klapper jeg bare et eller andet juks
> sammen der lige løser problemet.

Split på '.' (tag splitmønsteret som argument i din funktion, og du er
uafhængig af, om det er '.')

Brug int() til at se, om det er et tal. Hvis der også kan indgå cifre
i de led, der ikke er for tal at regne, så må du yderligere checke
det. Eller bruge /^\d+$/ på leddene i stedet for int().

Brug "sort BLOCK LIST" formen af sort() og fyld block ud med den
algoritme, du vil bruge (hvori du plitter og brancher alt efter, om
det er integers eller strings)

Alternativ idé: i din sammenligning erstatter du alle tal med
samme tal med et så stort antal foranstillede nuller, at du er
sikker på, at der er lige mange cifre i tallene (brug sprintf())
Derefter kan du bare sammenligne alfabetisk (cmp).

God fornøjelse.

--
Jakob

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste