arrays - 获取不带方括号和双引号的数组元素值

标签 arrays ruby sorting indexing

我有几个 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/

相关文章:

java - 如何在http请求头中发送签名

c++ - 指针数组的动态分配及其替代方案

Ruby Mine 提示 "Cannot switch SDK."即使 SDK 存在并且可用

java - 试图找出排序的差异

javascript - 如何自定义这个已经自定义的 jQuery 排序解决方案?

arrays - Ballerina 将元素附加到数组的末尾

ruby-on-rails - Google+ API 服务器端流程 Rails 4.0 - 无效凭证

ruby - 如何告诉 Rubocop 忽略特定目录或文件

python - 按内部数组的长度对 numpy 数组的 numpy 数组进行排序

python - 在Python中循环二维数组的最有效方法是什么