Function for integers to displayed with same number of digit

A

Adrian Fraiha

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!
 
D

Dumaiu

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
 
M

Michael W. Ryder

Adrian said:
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"
 
D

Dumaiu

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
 
M

Michael W. Ryder

Adrian said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top