gpt4 book ai didi

ruby - 如何将具有范围的值字符串转换为 Ruby 中的数组

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:32 25 4
gpt4 key购买 nike

我正在尝试解析由 "," 连接的数字和范围字符串,并将其转换为数值数组。我将其作为输入:"1,3,6-8,5",并希望有一个这样的数组:[1,3,5,6,7,8 ]

我只能在没有范围的情况下这样做,像这样:

"12,2,6".split(",").map { |s| s.to_i }.sort #=> [2, 6, 12]

有了范围,我做不到:

a = "12,3-5,2,6"
b = a.gsub(/-/, "..") #=> "12,3..5,2,6"
c = b.split(",") #=> ["12", "3..5", "2", "6"]
d = c.sort_by(&:to_i) #=> ["2", "3..5", "6", "12"]
e = d.split(",").map { |s| s.to_i } #>> Error

我该怎么做?

我还想在 map 中使用 splat 运算符,但 splat 不接受像 [*(3..5)] 这样的字符串。

最佳答案

"12,3-5,2,6".
gsub(/(\d+)-(\d+)/) { ($1..$2).to_a.join(',') }.
split(',').
map(&:to_i)
#⇒ [12, 3, 4, 5, 2, 6]

关于ruby - 如何将具有范围的值字符串转换为 Ruby 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com