我喜欢加入一个数组,产生一个'英文列表'。例如,['one', 'two', 'three']
应该会生成'one, two and three'
。
我编写了这段代码来实现它(假设数组不是空的,在我的情况下不是这样)
if array.length == 1
result = array[0]
else
result = "#{array[0, array.length].join(', ')} and #{array.last}"
end
但是我想知道是否存在一些'高级'连接方法来实现这种行为?或者至少是一些更短/更好的代码?
答案 0 :(得分:41)
核心Ruby中不存在这样的方法。
已经在Rails的Active Support库中implemented了:
['one', 'two', 'three'].to_sentence
#=> "one, two, and three"
分隔符是可配置的,默认情况下它也使用Rails的I18n。
如果您使用ActiveSupport或Rails,这将是首选方法。如果您的应用程序不是Railsy,那么您的实现似乎只适用于英语。
答案 1 :(得分:8)
就像可读性暗示一样。你可以写
array[0...-1]
选择除最后一个元素之外的所有元素。
编辑,用Nick的建议更新了代码示例。