David Oneill
David Oneill

Reputation: 13065

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: 57392

Answers (3)

bta
bta

Reputation: 45057

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

Upvotes: 22

Aaron Hinni
Aaron Hinni

Reputation: 14716

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

Upvotes: 90

Joshua Smith
Joshua Smith

Reputation: 6621

You can use inject:

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

Upvotes: 5

Related Questions