Ruby反向字符串与unshift

时间:2014-01-10 16:12:26

标签: ruby

要学习LIFO FIFO,我正在尝试制作一个反转字符串的方法

#!/usr/bin/env ruby
def reverse(string)
    reverse = []

    string.split.each do | char | 
        reverse.unshift(char)
    end

    puts reverse.join
end

reverse("Hello")

当我这样做时,控制台只返回“你好”。不应该不加速回归“olleH”?

,即对于每个字符,它按顺序排列并添加到反向数组的开头。

3 个答案:

答案 0 :(得分:4)

split没有按照你的想法行事(默认情况下,它会在空格上分割,而不是在每个字符上分割):

> "Hello".split
#=> ["Hello"]

您可能需要chars

> "Hello".chars
#=> ["H", "e", "l", "l", "o"]

您也可以使用each_char方法:

string.each_char do |char|

答案 1 :(得分:2)

默认情况下,

split在空格上拆分,因此只会产生一个令牌Hello。尝试使用Hello world,您将获得world Hello

解决方案是将分隔符(在本例中为空字符串"")传递给split方法。

答案 2 :(得分:1)

这是因为你的string.split没有将数组拆分成单个字符。将其更改为string.split('')

def reverse(string)
  reverse = []

  string.split('').each do | char | 
    reverse.unshift(char)
  end

  puts reverse.join
end

reverse("Hello")
# => olleH