颠倒ruby中数组的顺序

时间:2011-03-09 04:04:30

标签: 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

它扭转了个别数字 - 我知道如何阻止它?

5 个答案:

答案 0 :(得分:72)

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"

答案 1 :(得分:14)

听起来你的数组实际上是一个String

答案 2 :(得分:2)

您是否正在尝试撤销列表?如果是这样,那么:

>> 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]

答案 3 :(得分:2)

如果您的数组是实际字符串,请尝试:

"12,16,5,9,11,5,4".split(',').reverse

希望能解决你的问题!

答案 4 :(得分:0)

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]