Create a human-readable list with "and" inserted before the last element from a ruby list

ruby

Solution

Try: `[list[0...-1].join(", "), list.last].join(", and ")`.

Edit: Rails has the method you were probably looking for, called `to_sentence`.

In case you do not have Rails or do not wish to depend on Rails, open `Array` class and include the above method, like:

class Array
  def join_all(join_with = ", ", connector = "and", last_comma = false)
    return self.to_s if self.empty? || self.size==1
    connector = join_with+connector if last_comma
    [list[0...-1].join(join_with), list.last].join(connector)
  end
end

Problem

How would you take a list and make it into a comma-separated string, with "and" before the last element in the array? Take something like: ``` list1 = ['a','b','c'] ``` And turn it into this: ``` => "a, b, and c" ``` I remember ruby had a method for this. I've searched however, and couldn't find it. Thanks for the help.

Original source