356speedster Skrevet 5. mai 2004 Del 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? Lenke til kommentar
Torbjørn Skrevet 5. mai 2004 Del Skrevet 5. mai 2004 sprintf "%04i",$tall; eks: perl -e 'print sprintf "%04i",25' Lenke til kommentar
356speedster Skrevet 5. mai 2004 Forfatter Del 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"; } Lenke til kommentar
Torbjørn Skrevet 6. mai 2004 Del 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 Lenke til kommentar
Scalpel Skrevet 7. mai 2004 Del 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. Lenke til kommentar
Torbjørn Skrevet 7. mai 2004 Del 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 Lenke til kommentar
tvangsgreie Skrevet 11. mai 2004 Del 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' Lenke til kommentar
Torbjørn Skrevet 11. mai 2004 Del 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å.. 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å