David Oneill
David Oneill

Reputation: 13115

Ruby concatenate strings and add spaces

I have 4 string variables name, quest, favorite_color, speed that might be empty. I want to concatenate them all together, putting spaces between those that aren't empty. Simplicity of the code, i.e how simple is to to look at and understand, is more important than speed.

So:

name = 'Tim'
quest = 'destroy'
favorite_color = 'red'
speed = 'fast'

becomes

'Tim destroy red fast'

and

name = 'Steve'
quest = ''
favorite_color = ''
speed = 'slow'

becomes:

'Steve slow'

Note there is only 1 space between 'Steve' and 'slow'.

How do I do that (preferably in 1 line)?

Upvotes: 44

Views: 57419

Answers (3)

bta
bta

Reputation: 45087

Try [name,quest,favorite_color,speed].join(' ').squeeze(' ')

Upvotes: 22

Aaron Hinni
Aaron Hinni

Reputation: 14736

[name, quest, favorite_color, speed].reject(&:empty?).join(' ')

Upvotes: 90

Joshua Smith
Joshua Smith

Reputation: 6651

You can use inject:

[name,quest,favorite_color,speed].inject("") {|k,v| v.empty? ? k : k << " " << v }.strip

Upvotes: 5

Related Questions