7

I am using Ruby on Rails v3.0.9 and I would like to "transform" an array of strings in a sentence including punctuation. That is, if I have an array like the following:

["element 1", "element 2", "element 3"]

I would like to get\build:

# Note: I added 'Elements are: ' at the begin, ',' between elements and '.' at
# the end.
"Elements are: element 1, element 2, element 3."

How can I do that?

Backo
  • 18,291
  • 27
  • 103
  • 170

2 Answers2

7

Rails has Array#to_sentence that will do the same as array.join(', ') and additionally add "and " before the last item.

puts "Elements are: #{["element 1", "element 2", "element 3"].to_sentence}."

The rest, as you can see, is just putting it together.

coreyward
  • 77,547
  • 20
  • 137
  • 166
  • 2
    @Backo this is probably what you want, but if you want exact same sentence as you created, replace `to_sentence` with `join(", ")` – rubish Aug 21 '11 at 23:55
1

@coreyward's answer is close, but his suggestion's output doesn't match the requested output. This will give you exactly what you want:

puts "Elements are: #{array.to_sentence(last_word_connector: ', ')}."

See the docs for more examples and options.

mycargus
  • 2,538
  • 3
  • 23
  • 31