在ruby中反转数组的顺序
我有以下数组在ruby中反转数组的顺序,ruby,Ruby,我有以下数组[12,16,5,9,11,5,4]它会打印:12,16,5,9,11,5,4 我要打印:4,5,11,9,5,16,12 当我做了array.reverse时,它打印了: 4,5,11,9,5,61,21 它反转了单个数字-知道我怎么才能阻止它吗?听起来你的数组实际上是一个字符串 irb(main):001:0> a = [12,16,5,9,11,5,4] => [12, 16, 5, 9, 11, 5, 4] irb(main):002:0> a.rever
[12,16,5,9,11,5,4]
它会打印:12,16,5,9,11,5,4
我要打印:4,5,11,9,5,16,12
当我做了array.reverse
时,它打印了:
4,5,11,9,5,61,21
它反转了单个数字-知道我怎么才能阻止它吗?听起来你的数组实际上是一个字符串
irb(main):001:0> a = [12,16,5,9,11,5,4]
=> [12, 16, 5, 9, 11, 5, 4]
irb(main):002:0> a.reverse
=> [4, 5, 11, 9, 5, 16, 12]
我没看到你看到的
编辑:扩展Ben注意到的内容,您可能正在反转字符串
irb(main):005:0> "12,16,5,9,11,5,4".reverse
=> "4,5,11,9,5,61,21"
如果必须以这种方式反转字符串,则应执行以下操作:
irb(main):008:0> "12,16,5,9,11,5,4".split(",").reverse.join(",")
=> "4,5,11,9,5,16,12"
您是否正在尝试在适当的位置反转列表?如果是,则应:
>> arr = [12,16,5,9,11,5,4]
=> [12, 16, 5, 9, 11, 5, 4]
>> arr.reverse!
=> [4, 5, 11, 9, 5, 16, 12]
>> arr
=> [4, 5, 11, 9, 5, 16, 12]
否则:
>> arr_rev=arr.reverse
=> [4, 5, 11, 9, 5, 16, 12]
>> arr_rev
=> [4, 5, 11, 9, 5, 16, 12]
如果数组是实际字符串,请尝试以下操作:
"12,16,5,9,11,5,4".split(',').reverse
希望能解决你的问题 arr1=[12,16,5,9,11,5,4]
arr1 = [12,16,5,9,11,5,4]
i = 0
arr2 = []
arr1.length.times do
arr2 << arr1.reverse[i]
i += 1
end
p arr2
>>[4, 5, 11, 9, 5, 16, 12]
i=0
arr2=[]
arr1.length.times do
arr2>[4,5,11,9,5,16,12]
嗯<代码>>[12,16,5,9,11,5,4]。反向=>[4,5,11,9,5,16,12]您的代码的结果是:irb(main):002:0>“12,16,5,9,11,5,4”。拆分(',')。连接。反向=“4511956121”
。也就是说,它不起作用。谢谢!我刚刚把它修好了。OP可以使用array.inspect
查看它是一个数组还是一个字符串。在答案周围多加一点上下文,这比简单地发布代码要好。请记住,只有一行代码就可以选择最佳答案。所以解释您的8行程序。感谢您提供此代码片段,它可能会提供一些有限的短期帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。