356speedster Skrevet 5. mai 2004 Skrevet 5. mai 2004 Har et lite problem som det sikkert finnes en enkel løsning på. trenger å gjøre om et tall fra f.eks 25 til å bli 0025 Dvs. resultatet som jeg skal lagre i en txt fil skal alltid ha 4 siffer uansett hva nummeret er. (nummeret vil aldri bli høyere enn 9999) Noen som har tips?
Torbjørn Skrevet 5. mai 2004 Skrevet 5. mai 2004 sprintf "%04i",$tall; eks: perl -e 'print sprintf "%04i",25'
356speedster Skrevet 5. mai 2004 Forfatter Skrevet 5. mai 2004 takker, men jeg løste det på min "noob" måte :-) $zero="0"; if ($new_filenr < '10'){ $new_filecount=<$zero$zero$zero$new_filenr>; }elsif ($new_filenr > '9' && $new_filenr < '100'){ $new_filecount=<$zero$zero$new_filenr>; }elsif ($new_filenr > '99' && $new_filenr < '1000'){ $new_filecount=<$zero$new_filenr>; }else{ $new_filecount="$new_filenr"; }
Torbjørn Skrevet 6. mai 2004 Skrevet 6. mai 2004 det kan være verd å lære seg sprintf, hvertfall bruke ferdig kode som andre har laget (tok lang tid før jeg skjønte hva den egentlig gjorde) sprintf er vanlig i flere programmeringsspråk og meget anvendelig. å formatere et tall med "leading zeroes" er nesten å gjøre skam på funksjonen, men det er altså det jeg gjør her. prøvde du kommandlinjeeksemplet? perl -e 'print sprintf "%04i", 25' ? det viser pent og pyntlig 0025, prøv gjerne med andre tall enn 25. samt det ser profft ut hvis andre skulle finne på å titte på koden
Scalpel Skrevet 7. mai 2004 Skrevet 7. mai 2004 Jeg tror nok jeg ville brukt Torbjørn sin metode her. Langt enklere å lese, forandre på i ettertid, og kjører raskere. sprintf er en kjent funksjon som går igjen i de fleste språk.
Torbjørn Skrevet 7. mai 2004 Skrevet 7. mai 2004 hvis "%04i" delen av koden ser kryptisk ut, er det bare å slå opp sprintf: perldoc -f sprintf fra kommandolinja. I dette tilfellet betyr det at den skal ha formatere argumentet til en integer. Hvis det er mindre enn 4 tegn langt, skal det slenges på 0'er til den blir 4 lang. % markerer starten for mønsteret. så... $string = sprintf(mønster, argument1,argument2,...); er syposis'en
tvangsgreie Skrevet 11. mai 2004 Skrevet 11. mai 2004 perl -e 'print sprintf "%04i",25' Dette blir vel litt smør på flesk? Bruk printf. perl -e 'printf "%04i",25'
Torbjørn Skrevet 11. mai 2004 Skrevet 11. mai 2004 jau. printf er mere logisk når det skal skrives utmed en gang, men skal tallet bare gjøres om for kanskje å lagres som streng et sted så..
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å