如何随机化Ruby中字符串的大写/小写?

Ale*_*pov 2 ruby string methods character

我想转换'abcdef''aBCdeF''AbCDEF'或任何其他大小写字符的随机组合。我需要将它与任何给定的字符串一起使用。我知道String#upcase#swapcase#capitalize等等,但我不认为这是一个内置的做我想要的方式。我想出的最好的东西是这样的:

'abcdef'.chars.map { |c| c.send [:upcase, :downcase][rand 2] }.join
Run Code Online (Sandbox Code Playgroud)

有什么更好的想法吗?

小智 5

你可以尝试这样的事情,x你的字符串在哪里:

x.chars.map { |c| (rand 2) == 0 ? c : c.upcase }.join
Run Code Online (Sandbox Code Playgroud)

map方法采用随机生成01为每个字符生成的块。如果0,则按原样返回字符,否则将变为大写。


saw*_*awa 5

'abcdef'.gsub(/./){|s| s.send(%i[upcase downcase].sample)}
# => "aBCdEf"
Run Code Online (Sandbox Code Playgroud)