web-dev-qa-db-ja.com

Ruby文字列を連結してスペースを追加する

空の可能性のある4つの文字列変数name, quest, favorite_color, speedがあります。空でないものの間にスペースを入れて、それらをすべて連結します。コードの単純さ、つまり見たり理解するのがどれだけ簡単かは、速度よりも重要です。

そう:

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

になる

'Tim destroy red fast'

そして

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

になる:

'Steve slow'

「Steve」と「slow」の間にはスペースが1つしかありません。

どうすればよいですか(できれば1行で)?

37
David Oneill
[name, quest, favorite_color, speed].reject(&:empty?).join(' ')
78
Aaron Hinni

[name,quest,favorite_color,speed].join(' ').squeeze(' ')を試してください

21
bta

注入を使用できます:

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