Rails (actually ActiveSupport, part of the Rails framework) offers a very nice Array#to_sentence
method.
If you are using Rails or ActiveSupport, you can call
['dog', 'cat', 'bird', 'monkey'].to_sentence
# => "dog, cat, bird, and monkey"
The method is automatically customized according to I18n settings. For example, in Italy you should omit the last comma before the and
.
['dog', 'cat', 'bird', 'monkey'].to_sentence
# => "dog, cat, bird e monkey"
If you want something without depending on ActiveSupport
, you can start using the method source code.
This is just an example
class Array
def to_sentence
default_words_connector = ", "
default_two_words_connector = " and "
default_last_word_connector = ", and "
case length
when 0
""
when 1
self[0].to_s.dup
when 2
"#{self[0]}#{options[:two_words_connector]}#{self[1]}"
else
"#{self[0...-1].join(options[:words_connector])}#{options[:last_word_connector]}#{self[-1]}"
end
end
end