我有几个 Ruby 数组:
array1 = ["a", "b"]
array2 = ["a", "b", "c"]
array3 = ["a", "b", "c", "d"]
array4 = ["a", "b", "c", "d", "e"]
我需要返回以下字符串:
#array1
"a"
#array2
"a and b"
#array3
"a, b and c"
#array4
"a, b, c and d"
永远不应该显示数组的最后一个元素。
我事先不知道一个数组包含多少个元素或这些元素的值。
为了实现我所需要的,我想出了以下方法:
def format_array(array)
if array.length - 1 == 1
array[0].to_s
elsif array.length - 1 == 2
array[0].to_s + " and " + array[1].to_s
elsif array.length - 1 > 2
array.sort.each_with_index do |key, index|
unless key == "e"
if index == array.length - 2
" and " + array[index].to_s
else
array[index].to_s + ", "
end
end
end
end
end
此方法返回带有方括号和双引号的值数组,而不是精简字符串。例如,我得到 ["a", "b", "c", "d", "e"]
而不是 "a, b, c and d"
对于 array4
。
我怎样才能让它工作?
最佳答案
def join_with_commas_and_and(array)
if array.length <= 2
array.join(' and ')
else
[array[0..-2].join(', '), array[-1]].join(' and ')
end
end
编辑:要忽略最后一个元素,将此行添加为函数中的第一行:
array = array[0..-2]
关于arrays - 获取不带方括号和双引号的数组元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817065/