Ruby新手 - 我如何改变字符串?

时间:2011-08-10 07:58:49

标签: ruby

想要改变一个字符串。 这是我的代码: 怎么了? 感谢。

>> def string_shuffle(s)
>>   s.split('').shuffle(s.length()).join
>>   return s
>> end

6 个答案:

答案 0 :(得分:23)

如果你理解正确,你想要这个:

def string_shuffle(s)
  s.split("").shuffle.join
end

string_shuffle("The Ruby language")
=> "ea gu bgTayehRlnu"

答案 1 :(得分:8)

return s既不需要也不错。不需要,因为Ruby会返回最后执行的错误,因为您没有更改s,而是创建一个新字符串。

此外,如果您觉得它很有用,您可以直接将shuffle方法添加到String中,但要注意monkeypatching太多。

class String

  def shuffle
    self.split('').shuffle.join
  end
end

答案 2 :(得分:4)

这更快。 'hello'.chars.shuffle.join

测试自己:

require 'benchmark'

str = 'Hello' * 100
Benchmark.bm(10) do |x|
  x.report('chars')       { str.chars.shuffle.join }
  x.report('split')       { str.split('').shuffle.join }
  x.report('split regex') { str.split(//).shuffle.join }
end

答案 3 :(得分:2)

shuffle不接受(和需要)参数。使用:

 s.split(//).shuffle.to_s

答案 4 :(得分:1)

试试这个

s.split('').shuffle.join

答案 5 :(得分:1)

这样做:

s.chars.shuffle.join

示例:

s = "Hello, World!"
puts s.chars.shuffle.join

输出:

olH!l rWdel,o