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

Jos*_*son 17 ruby

想要洗牌一个字符串.这是我的代码:它有什么问题?谢谢.

>> def string_shuffle(s)
>>   s.split('').shuffle(s.length()).join
>>   return s
>> end
Run Code Online (Sandbox Code Playgroud)

kyr*_*ylo 23

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

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

string_shuffle("The Ruby language")
=> "ea gu bgTayehRlnu"
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用`chars`而不是`split("")` (3认同)

Ser*_*abe 8

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

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

class String

  def shuffle
    self.split('').shuffle.join
  end
end
Run Code Online (Sandbox Code Playgroud)


小智 6

这更快。 '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
Run Code Online (Sandbox Code Playgroud)