ruby-on-rails - 在 Ruby 中创建具有至少一个特殊字符、一个数字、一个大写、一个小写且在 Ruby 中没有重复字符的随机字符串
问题描述
我的任务是生成具有以下参数的随机字符串:
- 至少一个大写字母
- 至少低一个
- 至少一位数
- 不允许重复的字符/数字(例如,不允许使用 aa,允许使用 aba,允许使用 Aa)
我能够生成带有 1,2,3 参数的随机字符串,但缺少参数 4 逻辑。
inputChars = [('a'..'z'), ('A'..'Z'),(0..9)].map(&:to_a).flatten
string = (0...16).map { inputChars[rand(inputChars.length)] }.join
解决方案
require 'set'
inputChars = [('a'..'z'), ('A'..'Z'),(0..9)].map(&:to_a).flatten
set_string = Set.new
loop do
break if set_string.size == 16
cr = inputChars[rand(inputChars.length)]
set_string << cr
end
output = set_string.to_a.join
我只是将您的地图操作更改为循环操作并添加 Set 数据结构以存储来自随机 inputChars 操作的字符。使用 Set 将不允许相同的字符
推荐阅读
- sql - 微软 SQL 。搜索选定数据库中的所有表,查找所有行/列中的关键字
- python - h2o AutoML 与 h2o XGBoost - 模型指标
- websocket - WebSocket 握手期间出错:意外响应代码:502 角度
- javascript - 将相同的多个对象推入多个数组
- java - 如何解析 Envelope.Payload.Data 的 protobuf 数据?
- python-3.x - 用 Kivy 语言重绘按钮和其他小部件
- c# - 我正在尝试使用 ajax 调用将上传的文件从视图发送到控制器,但该文件在控制器中被接收为 null
- java - 由于 Linux OOM 杀手,Java 进程可能被杀死
- mysql - 为什么我在一种情况下得到全表扫描,而在另一种情况下却没有?
- javascript - Reactjs:转换问题自定义按钮图标