运维开发网

数组 – 如何在Ruby中的两个不同位置将数组转换为具有两个不同分隔符的字符串?

运维开发网 https://www.qedev.com 2020-07-27 16:35 出处:网络 作者:运维开发网整理
我想在两个不同的地方将一个数组转换为一个带有两个不同分隔符的字符串.含义: array = [1,2,3,4] after converting: separator 1: (":") separator 2: ("and") string = "1:2:3: and 4" OR string = "1:2 and 3:4" 我如何构建动态和短代码,让我将数组(任意长度)转换为一个字符串,允许我在
我想在两个不同的地方将一个数组转换为一个带有两个不同分隔符的字符串.含义:

array = [1,2,3,4]
after converting: separator 1: (":") separator 2: ("and")
string = "1:2:3: and 4"
OR
string = "1:2 and 3:4"

我如何构建动态和短代码,让我将数组(任意长度)转换为一个字符串,允许我在不同的位置插入多个分隔符.

我目前的解决方案是凌乱和丑陋的:

我在一个参数中使用了#join.

def oxford_comma(array)
 if array.length == 1
  result_at_1 = array.join
  return result_at_1
 elsif array.length == 2
  result_at_2 = array.join(" and ")
  return result_at_2
 elsif array.length == 3
  last = array.pop
  result = array.join(", ")
  last = ", and " + last
  result = result + last
 elsif array.length > 3
  last = array.pop
  result = array.join(", ")
  last = ", and " + last
  result = result + last
  return result
 end
end

有人可以帮我建立一个更好,更短,更抽象的方法吗?

pos = 2
[array[0...pos], array[pos..-1]].
  map { |e| e.join ':' }.
  join(' and ')
#⇒ "1:2 and 3:4"
0

精彩评论

暂无评论...
验证码 换一张
取 消