使用each_char时如何删除原始字符串?

时间:2013-08-02 20:10:44

标签: ruby

我的代码是:

def LetterChanges(str)
  str.each_char {|x| print x.next!}
end

LetterChanges("hello")

返回:

 "ifmmp" => "hello"

如何让它只返回"ifmmp"?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:5)

"hello".gsub(/./, &:next)
# => "ifmmp"

答案 1 :(得分:2)

def LetterChanges(str)
 str.chars.map(&:next).join("")
end

LetterChanges("hello")
# => "ifmmp"

def LetterChanges(str)
 str.size.times{|i| str[i] = str[i].next }
 str
end

LetterChanges("hello")
# => "ifmmp"

答案 2 :(得分:0)

puts str;

这应该为你做。

答案 3 :(得分:0)

解决方案很简单:

def LetterChanges(str)
    puts str.chars.map(&:next).join
end

但我建议你重构它以让puts退出。这样你就不会对值的打印进行硬编码,只需让它返回字符串,这样方法的用户就可以用这个值做任何他想做的事情:

def LetterChanges(str)
    str.chars.map(&:next).join
end

然后你可以这样做:

puts LetterChanges("hello")
# => "ifmmp"