Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > indent strings(make them lined up)

Reply
Thread Tools

indent strings(make them lined up)

 
 
Jon Kim
Guest
Posts: n/a
 
      12-08-2009
Hi,

I am newbie in Ruby. I have a question about indenting string.

there is strings like below:

www.google.com => 123.123.123.12
www.ibm.com => 123.112.123.12
www.iowahawkeyes => 123.123.112.12

i want to make above like next

www.google.com => 123.123.123.12
www.ibm.com => 123.112.123.12
www.iowahawkeyes => 123.123.112.12


original code was

puts (dns + " => " + ip)

I tried next code

puts (dns + " "*(20 - dns.length) + " = > " + ip)

but it did not work well. please teach me how to do it.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Intransition
Guest
Posts: n/a
 
      12-08-2009


On Dec 7, 11:26=A0pm, Jon Kim <(E-Mail Removed)> wrote:
> Hi,
>
> I am newbie in Ruby. I have a question about indenting string.
>
> there is strings like below:
>
> www.google.com=3D> 123.123.123.12www.ibm.com=3D> 123.112.123.12www.iowaha=

wkeyes=3D> 123.123.112.12
>
> i want to make above like next
>
> www.google.com=A0 =A0 =3D> 123.123.123.12www.ibm.com=A0 =A0 =A0 =A0=3D> 1=

23.112.123.12www.iowahawkeyes=A0 =3D> 123.123.112.12
>
> original code was
>
> puts (dns + " =3D> " + ip)
>
> I tried next code
>
> puts (dns + " =A0"*(20 - dns.length) + " =3D > " + ip)
>
> but it did not work well. please teach me how to do it.


"%-30s %s" % [dns, ip]


 
Reply With Quote
 
 
 
 
Steve Wilhelm
Guest
Posts: n/a
 
      12-08-2009
Thomas Sawyer wrote:
> On Dec 7, 11:26�pm, Jon Kim <(E-Mail Removed)> wrote:
>> www.google.com� � => 123.123.123.12www.ibm.com� � � �=> 123.112.123.12www.iowahawkeyes� => 123.123.112.12
>>
>> original code was
>>
>> puts (dns + " => " + ip)
>>
>> I tried next code
>>
>> puts (dns + " �"*(20 - dns.length) + " = > " + ip)
>>
>> but it did not work well. please teach me how to do it.

>
> "%-30s %s" % [dns, ip]


Thomas's suggestion of String Format (%) is correct, just revising
example to reflect the original code above.

puts "%-20s => %s" % [dns, ip]
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Justin Collins
Guest
Posts: n/a
 
      12-08-2009
Jon Kim wrote:
> Hi,
>
> I am newbie in Ruby. I have a question about indenting string.
>
> there is strings like below:
>
> www.google.com => 123.123.123.12
> www.ibm.com => 123.112.123.12
> www.iowahawkeyes => 123.123.112.12
>
> i want to make above like next
>
> www.google.com => 123.123.123.12
> www.ibm.com => 123.112.123.12
> www.iowahawkeyes => 123.123.112.12
>
>
> original code was
>
> puts (dns + " => " + ip)
>
> I tried next code
>
> puts (dns + " "*(20 - dns.length) + " = > " + ip)
>
> but it did not work well. please teach me how to do it.
>


You could do

puts "#{dns.ljust(20)} => #{ip}"


-Justin

 
Reply With Quote
 
Rob Biedenharn
Guest
Posts: n/a
 
      12-08-2009
On Dec 8, 2009, at 5:11 AM, Justin Collins wrote:
> Jon Kim wrote:
>> Hi,
>>
>> I am newbie in Ruby. I have a question about indenting string.
>>
>> there is strings like below:
>>
>> www.google.com => 123.123.123.12
>> www.ibm.com => 123.112.123.12
>> www.iowahawkeyes => 123.123.112.12
>>
>> i want to make above like next
>>
>> www.google.com => 123.123.123.12
>> www.ibm.com => 123.112.123.12
>> www.iowahawkeyes => 123.123.112.12
>>
>>
>> original code was
>>
>> puts (dns + " => " + ip)
>>
>> I tried next code
>>
>> puts (dns + " "*(20 - dns.length) + " = > " + ip)
>>
>> but it did not work well. please teach me how to do it.
>>

>
> You could do
>
> puts "#{dns.ljust(20)} => #{ip}"
>
> -Justin


OK, I'm going to go out on a limb and presume that you obtain the
successive dns and ip values from some sort of data structure. I'm
going to further assume a hash since you're using the association
syntax in your output string, but feel free to generalize the parts of
this code that handle that iteration.

irb> my_data = {
?> 'www.google.com' => '216.68.119.70',
?> 'www.ibm.com' => '129.42.60.216',
?> 'www.iowahawkeyes.com' => '199.108.163.135',
?> }
=> {"www.google.com"=>"216.68.119.70", "www.ibm.com"=>"129.42.60.216",
"www.iowahawkeyes.com"=>"199.108.163.135"}
irb> width = my_data.keys.inject(0) {|wmax,dns| [dns.length, wmax].max }
=> 20
irb> my_data.each do |dns,ip|
?> puts "%-*s => %s"%[width, dns, ip]
irb> end
www.google.com => 216.68.119.70
www.ibm.com => 129.42.60.216
www.iowahawkeyes.com => 199.108.163.135
=> {"www.google.com"=>"216.68.119.70", "www.ibm.com"=>"129.42.60.216",
"www.iowahawkeyes.com"=>"199.108.163.135"}
irb>
?> my_data['www.letmegooglethatforyou.com'] = '209.20.88.2'
=> "209.20.88.2"
irb>
?> width = my_data.keys.inject(0) {|wmax,dns| [dns.length,
wmax].max }
=> 29
irb> my_data.each do |dns,ip|
?> puts "#{dns.ljust(width)} => #{ip}"
irb> end
www.google.com => 216.68.119.70
www.ibm.com => 129.42.60.216
www.letmegooglethatforyou.com => 209.20.88.2
www.iowahawkeyes.com => 199.108.163.135
=> {"www.google.com"=>"216.68.119.70", "www.ibm.com"=>"129.42.60.216",
"www.letmegooglethatforyou.com"=>"209.20.88.2" ,
"www.iowahawkeyes.com"=>"199.108.163.135"}

You could also put a limit on the width of the column so that one long
value doesn't "win" or analyze the widths for some other property
(like rounding up to a multiple of 4 or something).

-Rob

Rob Biedenharn http://agileconsultingllc.com
http://www.velocityreviews.com/forums/(E-Mail Removed)




 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      12-08-2009
2009/12/8 Steve Wilhelm <(E-Mail Removed)>:
> Thomas Sawyer wrote:
>> On Dec 7, 11:26=EF=BF=BDpm, Jon Kim <(E-Mail Removed)> wrote:
>>> www.google.com=EF=BF=BD =EF=BF=BD =3D> 123.123.123.12www.ibm.com=EF=BF=

=BD =EF=BF=BD =EF=BF=BD =EF=BF=BD=3D> 123.112.123.12www.iowahawkeyes=EF=BF=
=BD =3D> 123.123.112.12
>>>
>>> original code was
>>>
>>> puts (dns + " =3D> " + ip)
>>>
>>> I tried next code
>>>
>>> puts (dns + " =EF=BF=BD"*(20 - dns.length) + " =3D > " + ip)
>>>
>>> but it did not work well. please teach me how to do it.

>>
>> "%-30s %s" % [dns, ip]

>
> Thomas's suggestion of String Format (%) is correct, just revising
> example to reflect the original code above.
>
> puts "%-20s =3D> %s" % [dns, ip]


I'd prefer printf in that case

printf "%-20s =3D> %s\n", dns, ip

Cheers

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

 
Reply With Quote
 
W. James
Guest
Posts: n/a
 
      12-09-2009
Jon Kim wrote:

> Hi,
>
> I am newbie in Ruby. I have a question about indenting string.
>
> there is strings like below:
>
> www.google.com => 123.123.123.12
> www.ibm.com => 123.112.123.12
> www.iowahawkeyes => 123.123.112.12
>
> i want to make above like next
>
> www.google.com => 123.123.123.12
> www.ibm.com => 123.112.123.12
> www.iowahawkeyes => 123.123.112.12
>
>
> original code was
>
> puts (dns + " => " + ip)
>
> I tried next code
>
> puts (dns + " "*(20 - dns.length) + " = > " + ip)
>
> but it did not work well. please teach me how to do it.


data =
%w(blip bleeping rob_the_fraud tor what-pompous-verbosity dreadful).
map{|s| [s + '.com', (1..4).map{rand 256}.join('.')] }

width = data.map{|a,b| a.size}.max

puts data.map{|a,b| [a.ljust(width),b].join " => " }


=== output ===

blip.com => 249.7.84.219
bleeping.com => 14.120.94.124
rob_the_fraud.com => 252.63.171.160
tor.com => 173.239.40.90
what-pompous-verbosity.com => 56.61.184.48
dreadful.com => 31.56.145.209


--

 
Reply With Quote
 
Rob Biedenharn
Guest
Posts: n/a
 
      12-09-2009
On Dec 9, 2009, at 3:55 AM, W. James wrote:
> Jon Kim wrote:
>> Hi,
>>
>> I am newbie in Ruby. I have a question about indenting string.
>>
>> there is strings like below:
>>
>> www.google.com => 123.123.123.12
>> www.ibm.com => 123.112.123.12
>> www.iowahawkeyes => 123.123.112.12
>>
>> i want to make above like next
>>
>> www.google.com => 123.123.123.12
>> www.ibm.com => 123.112.123.12
>> www.iowahawkeyes => 123.123.112.12
>>
>>
>> original code was
>>
>> puts (dns + " => " + ip)
>>
>> I tried next code
>>
>> puts (dns + " "*(20 - dns.length) + " = > " + ip)
>>
>> but it did not work well. please teach me how to do it.

>
> data =
> %w(blip bleeping rob_the_fraud tor what-pompous-verbosity dreadful).
> map{|s| [s + '.com', (1..4).map{rand 256}.join('.')] }
>
> width = data.map{|a,b| a.size}.max
>
> puts data.map{|a,b| [a.ljust(width),b].join " => " }
>
>
> === output ===
>
> blip.com => 249.7.84.219
> bleeping.com => 14.120.94.124
> rob_the_fraud.com => 252.63.171.160
> tor.com => 173.239.40.90
> what-pompous-verbosity.com => 56.61.184.48
> dreadful.com => 31.56.145.209



So you missed the phrase "please teach me how to do it" from the OP,
huh?

Sorry that you're offended by my distinction between a request to
"teach me" versus "show me".

I hope Jon Kim <(E-Mail Removed)> gets something from all the
responses.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(E-Mail Removed)




 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
WEB page to read a single lined text file JMG ASP .Net 2 03-29-2007 04:56 AM
gnu indent: how to avoid extra indent? dt C Programming 4 12-31-2006 11:31 AM
How to put a not new-lined table after nbsp ennio HTML 1 09-17-2006 02:01 PM
Two Cells lined horizontally using CSS JSOUL HTML 3 11-09-2005 11:35 PM
lead-lined camera bag B Digital Photography 23 12-30-2003 10:34 AM



Advertisments