簡體   English   中英

Ruby 的新手 - 如何隨機播放字符串?

[英]New to Ruby - how do I shuffle a string?

想要洗牌。 這是我的代碼:它有什么問題? 謝謝。

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

如果正確理解你,你想要這個:

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

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

return s既不需要又是錯誤的。 不需要,因為 Ruby 返回最后執行的內容並且錯誤,因為您沒有更改 s,您正在創建一個新字符串。

此外,如果您發現shuffle方法有用,可以直接將其添加到 String 中,但要注意猴子補丁太多。

class String

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

這更快。 '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

shuffle 不接受(並且需要)arguments。 利用:

 s.split(//).shuffle.to_s

這將做:

s.chars.shuffle.join

例子:

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

Output:

olH!l rWdel,o

嘗試這個

s.split('').shuffle.join

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM