生成随机字符串并保存到文件

时间:2011-11-02 20:16:09

标签: ruby file random save

我坚持在Ruby中执行如此简单的程序,它会生成一个63个字符长的随机字符串,然后将其存储在文本文件中。 现在我的代码是:

def Password_Generator(length=63)
  chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
  password = ''
  length.time { |i| password << chars[rand(chars.length)] }
  aFile = File.new("Generated-Password.txt", "w+")
  aFile.write(password)
  aFile.close
end

2 个答案:

答案 0 :(得分:4)

首先,Password_Generator在Ruby中是一个错误的方法名,因为常量用于类名。 Ruby开发人员更喜欢使用snake_case而不是camelCase。对于你的实际问题(它是Ruby 1.9):

def generate_password(length=63)
  chars = [*?a..?z, *?A..?Z, *0..9]
  (1..length).map{ chars.sample }.join
end

我可能会用不同的方法对文件进行实际写入,关注点分离以及所有这些。

答案 1 :(得分:0)

require 'securerandom'
def generate_password(length=63)
  # urlsafe_base64 uses lowercase, uppercase, 1-9 and _-. 
  # The latter are removed from the generated string.
  SecureRandom.urlsafe_base64(length).delete('_-')[0, length]
end

File.open('pwd.txt', 'w'){|f| f.puts generate_password}