Ruby объединяет строки и добавляет пробелы - PullRequest
36 голосов
/ 12 марта 2010

У меня есть 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'

Обратите внимание, что между «Стивом» и «медленным» есть только 1 пробел.

Как мне это сделать (желательно в 1 строку)?

Ответы [ 3 ]

77 голосов
/ 12 марта 2010
[name, quest, favorite_color, speed].reject(&:empty?).join(' ')
20 голосов
/ 12 марта 2010

Попробуйте [name,quest,favorite_color,speed].join(' ').squeeze(' ')

5 голосов
/ 12 марта 2010

Вы можете использовать Inject:

[name,quest,favorite_color,speed].inject("") {|k,v| v.empty? ? k : k << " " << v }.strip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...