想要改变一个字符串。 这是我的代码: 怎么了? 感谢。
>> def string_shuffle(s)
>> s.split('').shuffle(s.length()).join
>> return s
>> end
答案 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