[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Function for integers to displayed with same number of digit

Adrian Fraiha

7/22/2006 11:24:00 PM

Is there or a function, or anyone know of a hack without using if else
statements extensivley to have numbers displayed, such as 1 as 0001, 100
as 0100, 1000 as 1000 etc?

Anyhelp is appreciated, thanks!

--
Posted via http://www.ruby-....

5 Answers

Dumaiu

7/23/2006 12:04:00 AM

0

Here's what I've done. Numeric formatting for output is most natural
with printf(): 'printf("%<c><n>d", <num>)', where <n> is the number of
digits, <num> is the number to be displayed, and <c> is the fill
character. So

printf( "%04d", 100 )

yields '0100', as you're padding with zeros out to four places.

This is all well and good for display purposes, but what about for
internal use? The only solution I've found so far is to use the
stringio library, which works a bit like C++'s <strstream>, if you're
familiar with that. That is, it lets you do I/O operations on Strings.
But it can be a bit odd until you get used to it. If, as above, you
wanted to convert a number to a four-character string:

require 'stringio'
s = String.new
StringIO.new( s ).printf("%04d", 100)

Variable s will now hold '0100'. The StringIO ctor takes a reference
to an existing String, so you can't do the whole operation in one
command. Note that s now functions like an output stream, repeated
StringIO operations appending to it rather than overwriting it, and you
must manually "flush" it with an empty-string assignment if you intend
to reuse it as an output buffer.
Boy, I got to use a lot of jargon in that one.

-Jonathan

Michael W. Ryder

7/23/2006 12:11:00 AM

0

Adrian Fraiha wrote:
> Is there or a function, or anyone know of a hack without using if else
> statements extensivley to have numbers displayed, such as 1 as 0001, 100
> as 0100, 1000 as 1000 etc?
>
> Anyhelp is appreciated, thanks!
>

irb(main):001:0> "%04d" % 1
=> "0001"

Dumaiu

7/23/2006 12:30:00 AM

0

Well, thanks a lot! Don't I feel like a jackass now? I didn't know
old frog-eyes accepted format arguments, although of course it makes
sense.

-J

Adrian Fraiha

7/23/2006 4:56:00 AM

0

Michael W. Ryder wrote:
> Adrian Fraiha wrote:
>> Is there or a function, or anyone know of a hack without using if else
>> statements extensivley to have numbers displayed, such as 1 as 0001, 100
>> as 0100, 1000 as 1000 etc?
>>
>> Anyhelp is appreciated, thanks!
>>
>
> irb(main):001:0> "%04d" % 1
> => "0001"

Hey, thanks to both of you for your help. I had no idea Modulus acted
like that.

--
Posted via http://www.ruby-....

Michael W. Ryder

7/23/2006 5:47:00 AM

0

Adrian Fraiha wrote:
> Michael W. Ryder wrote:
>> Adrian Fraiha wrote:
>>> Is there or a function, or anyone know of a hack without using if else
>>> statements extensivley to have numbers displayed, such as 1 as 0001, 100
>>> as 0100, 1000 as 1000 etc?
>>>
>>> Anyhelp is appreciated, thanks!
>>>
>> irb(main):001:0> "%04d" % 1
>> => "0001"
>
> Hey, thanks to both of you for your help. I had no idea Modulus acted
> like that.
>

It's the first Instance method for the String class in the Pickaxe book.