gpt4 book ai didi

ruby - 如何在 Ruby 中通过分隔符拆分数组?

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

例如,如果我有这样一个数组:

[:open, 1, :open, 2, 3, :close, 4, :close, :open, 5, :close]

我想得到这个:

[[1, [2, 3], 4], [5]]

:open 有效地变为 [:close 变为 ]

最佳答案

您可能可以使用堆栈来完成此操作,但递归设计非常容易:

#!/usr/bin/env ruby

x = [:open, 1, :open, 2, 3, :close, 4, :close, :open, 5, :close]

def parse(list)
result = []
while list.any?
case (item = list.shift)
when :open
result.push(parse(list))
when :close
return result
else
result.push(item)
end
end

return result
end

puts parse(x).inspect

请注意,这会破坏您的原始数组。如果你想保留它,你应该在传递它之前克隆它。

关于ruby - 如何在 Ruby 中通过分隔符拆分数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738039/

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