リストの最後の要素の前にリストを入れてカンマ区切りの文字列にしますか?ルビリストの最後の要素の前に "and"を挿入して人間が読めるリストを作成する
のようなもの取る:
list1 = ['a','b','c']
をそして、これにそれを回す:私はルビーは、このための方法を持っていた覚え
=> "a, b, and c"
。私はしかし、検索し、それを見つけることができませんでした。 助けてくれてありがとう。
リストの最後の要素の前にリストを入れてカンマ区切りの文字列にしますか?ルビリストの最後の要素の前に "and"を挿入して人間が読めるリストを作成する
のようなもの取る:
list1 = ['a','b','c']
をそして、これにそれを回す:私はルビーは、このための方法を持っていた覚え
=> "a, b, and c"
。私はしかし、検索し、それを見つけることができませんでした。 助けてくれてありがとう。
試行:[list[0...-1].join(", "), list.last].join(", and ")
編集:Railsには、おそらく探していた方法があり、to_sentence
と呼ばれています。
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
は良い方法かもしれませんが、これは動作します:あなたはRailsのを持っていないか、Railsの上のオープンArray
クラスに依存したくないなど、上記の方法を含み、場合
class Array
def to_human_string
arr = Array.new(self)
last = arr.pop
arr.join(", ") + ", and " + last.to_s
end
end
使用法:
['a','b','c'].to_human_string
=> "a, b, and c"
あなたは区切り文字のオプションを追加することができ、 'と'とオプションのオックスフォードカンマ。
これは1要素の配列では動作しません – fl00r
class Array
def to_sentence
sentence = self[0..-2].join(", ") + ", and " + self[-1].to_s if self.size > 1
sentence ||= self.to_s
end
end
ので
[1].to_sentence
#=> "1"
[1,2,3].to_sentence
#=> "1, 2, and 3"
[].to_sentence
#=> ""
とRailsで、ここオックスフォードコンマを使用するためにも
+1を国際化ロケールを使用していますto_sentence方法があります! –