[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

fized size record from a string

lucac81

3/10/2009 1:52:00 PM

Hello, I'm new to Ruby, and I'm learning it with a project that also
involves rails...
I'm stuck with an apparently simple problem, I receive from a form a
String and I need to extend it to a fixed char number (it must be 16
chars with eventual trailing spaces)
I've tought to convert it to an array, it's easy but I don't know how
to extend it to the needed size.
Also I could add spaces to the string, but the again how can i control
how many I need to add?
Any hint on how I could do that?
Thank you very much
4 Answers

Tim Hunter

3/10/2009 2:04:00 PM

0

lucac81 wrote:
> Hello, I'm new to Ruby, and I'm learning it with a project that also
> involves rails...
> I'm stuck with an apparently simple problem, I receive from a form a
> String and I need to extend it to a fixed char number (it must be 16
> chars with eventual trailing spaces)

Look at the String#% method:

irb(main):003:0> "%-16s" % "123"
=> "123 "

This won't work if the original string is longer than 16, though. In
that case you just a copy of the original string.
--
Posted via http://www.ruby-....

dkmd_nielsen

3/10/2009 2:05:00 PM

0

On Mar 10, 8:51 am, lucac81 <lcors...@gmail.com> wrote:
> Hello, I'm new to Ruby, and I'm learning it with a project that also
> involves rails...
> I'm stuck with an apparently simple problem, I receive from a form a
> String and I need to extend it to a fixed char number (it must be 16
> chars with eventual trailing spaces)
> I've tought to convert it to an array, it's easy but I don't know how
> to extend it to the needed size.
> Also I could add spaces to the string, but the again how can i control
> how many I need to add?
> Any hint on how I could do that?
> Thank you very much

Simple, not very intelligent way could be

('string' + '-'*30)[0..16]

lucac81

3/10/2009 2:07:00 PM

0

On Mar 10, 2:51 pm, lucac81 <lcors...@gmail.com> wrote:
> Hello, I'm new to Ruby, and I'm learning it with a project that also
> involves rails...
> I'm stuck with an apparently simple problem, I receive from a form a
> String and I need to extend it to a fixed char number (it must be 16
> chars with eventual trailing spaces)
> I've tought to convert it to an array, it's easy but I don't know how
> to extend it to the needed size.
> Also I could add spaces to the string, but the again how can i control
> how many I need to add?
> Any hint on how I could do that?
> Thank you very much

Uhmm I just found how to achieve this... using the ljust method of the
String class...

str.ljust(integer, padstr=' ') => new_str

If integer is greater than the length of str, returns a new String of
length integer with str left justified and padded with padstr;
otherwise, returns str.

"hello".ljust(4) #=> "hello"
"hello".ljust(20) #=> "hello "
"hello".ljust(20, '1234') #=> "hello123412341234123"

this solves my problem, and there is the rjust method that works fine
on the other side (I need that too)

Rob Biedenharn

3/10/2009 2:16:00 PM

0


On Mar 10, 2009, at 9:53 AM, lucac81 wrote:

> Hello, I'm new to Ruby, and I'm learning it with a project that also
> involves rails...
> I'm stuck with an apparently simple problem, I receive from a form a
> String and I need to extend it to a fixed char number (it must be 16
> chars with eventual trailing spaces)
> I've tought to convert it to an array, it's easy but I don't know how
> to extend it to the needed size.
> Also I could add spaces to the string, but the again how can i control
> how many I need to add?
> Any hint on how I could do that?
> Thank you very much
>

irb> str = "too short"
=> "too short"
irb> lng = "this one is big enough"
=> "this one is big enough"

With Kernel#sprintf (which String#% calls)
irb> "%-16.16s"%str
=> "too short "
irb> "%-16.16s"%lng
=> "this one is big "

With String#ljust
irb> str.ljust(16)
=> "too short "
irb> lng.ljust(16)
=> "this one is big enough"

With String#[] (not what you want for short ones)
irb> str[0,16]
=> "too short"
irb> lng[0,16]
=> "this one is big "

-Rob

Rob Biedenharn http://agileconsult...
Rob@AgileConsultingLLC.com