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

问题描述 投票:17回答:6

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

>> def string_shuffle(s)
>>   s.split('').shuffle(s.length()).join
>>   return s
>> end
ruby
6个回答
23
投票

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

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

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

8
投票

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

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

class String

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

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

2
投票

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

 s.split(//).shuffle.to_s

1
投票

试试这个

s.split('').shuffle.join

1
投票

这样做:

s.chars.shuffle.join

例:

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

输出:

olH!l rWdel,o
© www.soinside.com 2019 - 2024. All rights reserved.