ruby - simplify string multiply concatenation

s is a string, This seems very long-winded - how can i simplify this? :

 if x === 2 z = s elsif x === 3 z = s+s elsif x === 4 z = s+s+s elsif x === 5 z = s+s+s+s elsif x === 6 z = s+s+s+s+s 

Thanks

2

4 Answers

Something like this is the simplest and works (as seen on ideone.com):

puts 'Hello' * 3 # HelloHelloHello s = 'Go' x = 4 z = s * (x - 1) puts z # GoGoGo 

API links

ruby-doc.org - String: str * integer => new_str

Copy—Returns a new String containing integer copies of the receiver.

"Ho! " * 3 #=> "Ho! Ho! Ho! " 
1
z='' (x-1).times do z+=s end 

Pseudo code (not ruby)

if 1 < int(x) < 7 then z = (x-1)*s 

For example for a rating system up to 5 stars you can use something like this:

def rating_to_star(rating) 'star' * rating.to_i + 'empty_star' * (5 - rating.to_i) end 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like