Ruby连接字符串并添加空格

Dav*_*ill 38 ruby string concatenation

我有4个字符串变量name, quest, favorite_color, speed可能是空的.我想将它们连接在一起,在非空的空格之间放置空格.代码的简单性,即查看和理解的简单程度,比速度更重要.

所以:

name = 'Tim'
quest = 'destroy'
favorite_color = 'red'
speed = 'fast'
Run Code Online (Sandbox Code Playgroud)

'Tim destroy red fast'
Run Code Online (Sandbox Code Playgroud)

name = 'Steve'
quest = ''
favorite_color = ''
speed = 'slow'
Run Code Online (Sandbox Code Playgroud)

变为:

'Steve slow'
Run Code Online (Sandbox Code Playgroud)

请注意,'Steve'和'slow'之间只有1个空格.

我该怎么做(最好是一行)?

Aar*_*nni 80

[name, quest, favorite_color, speed].reject(&:empty?).join(' ')
Run Code Online (Sandbox Code Playgroud)

  • Ruby非常优雅. (5认同)
  • @RichardPeck `compact` 删除了 `nil` 元素,具有空字符串的元素仍然会保留。 (2认同)

bta*_*bta 21

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

  • 您还可以使用非空格字符进行"连接"和"挤压"(一种永远不会出现在输入中),然后用空格替换该字符的所有实例. (2认同)

Jos*_*ith 5

你可以使用注入:

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