我有一對夫婦的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
。
我該如何做這項工作?
你不會在數組的長度的最後返回任何字符串超過2所以返回數組排序爲是。在ruby中記住在方法中執行的最後一條語句,並對其進行評估並返回。因此,只需將生成的字符串存儲在對象中,並在最後返回。另外,我不知道你爲什麼要檢查'array.length - 1',它應該是'array.length' –
感謝您的評論。按照我最初問這個問題的方式,你的答案是正確的,但用'array.length - 1'檢查沒有任何意義:我更新了問題以提供更多上下文。基本上,這是因爲我從不想顯示數組的最後一個元素。 –