不确定这是否应该用于我的术语,但我尝试做的是将len
个字符数量添加到数组中,然后将其输出到{{1 }}。我让这一代人满意但我不确定如何将字符串打包成阵列。现在,由于.txt
语句,它只是将所有字符串吐出到控制台中,只是为了确保它有效。
puts
答案 0 :(得分:1)
此处您的代码已简化
#Password list generator by Nightc||ed, ©2015
norm = [*"a".."z"]
caps = [*"A".."Z"]
nums = [*0..9]
num, len, type = [
"How many passwords would you like to generate?",
"Password length (1-x):",
"Which characters would you like to use?
[1] a-z, 0-9
[2] A-Z, 0-9
[3] a-z, A-Z, 0-9"].map do |msg|
puts msg
gets.to_i
end
arr = case type
when 1 then
norm + nums
when 2 then
caps + nums
when 3 then
norm + caps + nums
else
exit
end
passwords = num.times.map { arr.sample(len).join }
puts passwords.inspect
sleep
答案 1 :(得分:0)
您可以使用<<
方法添加到数组中。例如:
arr = []
3.times do |el|
arr << el
end
arr.inspect #=> [0, 1, 2]
另一种选择是push
方法:
arr = []
(0..2).each { |el| arr.push(el)}
答案 2 :(得分:0)
我认为您可以使用以下内容替换if...
及以下内容来简化您的生活:
case type
when "1"
arr = [norm,nums].flatten
when "2"
arr = [caps,nums].flatten
when "3"
arr = [norm,caps,nums].flatten
else
exit
end
passwd_set = []
num.times { passwd_set << arr.sample(len).join }
p passwd_set
我发现case
语句更容易阅读,更容易扩展。展平数组使得sample
可以直接生成所需数量的字符/符号,并且join
可以生成一个字符串,可以将其附加到passwd_set
数组。< / p>