【问题标题】:How to create email address generator with Ruby?如何使用 Ruby 创建电子邮件地址生成器?
【发布时间】:2015-03-05 14:41:52
【问题描述】:
  def emails
    i = 0
    number = rand(252...4350)

    males = ["tom", "jack", "adam"]
    females = ["elizabeth", "rose", "juliet"]

    surnameMales = ["oak", "yew", "timber"]
    surnameFemales = ["rosewelth", "gates", "jobs"]

    providers = ["gmail.com", "hotmail.com", "yahoo.com"]

    while i <= 100 do
      @addresses << 
    end
  end

我想要做的是选择一个随机数、姓名、姓氏和提供者并将它们放在一起 + 在姓氏末尾附加一个随机数,使其看起来像这样:rose.gates643@gmail.com,但有点卡在我必须把整个事情放在一起的地步。正如您可能知道的那样,我想创建一个 100 随机电子邮件用于测试目的。

您能否指出我如何使用Ruby 做我想做的事情?

【问题讨论】:

  • 测试什么?您将仅以多种格式中的一种生成电子邮件地址。可接受的格式列表比大多数人意识到的要长得多,这使得创建一个有价值的验证器变得很困难。如果您只需要“user@host.domain”的一种形式,那么可以肯定,您的代码将起作用。如果您需要测试电子邮件网关或验证器,那么不,它不会。
  • @theTinMan 我需要生成一些内容来向我的客户展示电子邮件在网站给定部分的外观。我想让它们看起来尽可能逼真,因此我这样做了。我猜基本上测试不是正确的称呼方式,更像是测试“它会成功”。 ;) 另外,由于需要本地化这些电子邮件,我没有使用Faker

标签: ruby-on-rails ruby email generator


【解决方案1】:

您的目标是将其作为练习,还是只是您想要完成的事情?如果是后者,请安装 faker gem 并使用它:

Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info"

对于 100:

100.times.map { Faker::Internet.email }

【讨论】:

  • Faker 使用了一组实际上可以是真实域的域,因此请确保不要使用它们以防您可能发送电子邮件。
【解决方案2】:

结合使用字符串插值和Array#sample

"#{females.sample}.#{surnameFemales.sample}#{rand(252...4350)}@#{providers.sample}"
>> "rose.rosewelth3266@gmail.com"

【讨论】:

    【解决方案3】:

    有一个couple ways to join strings in Ruby。内联占位符似乎在这里最有意义:

    @addressess << "#{ males.sample }.#{ surnameMales.sample }#{ number }@#{ providers.sample }"
    

    在双引号字符串中,#{ expr } 被评估并替换为内联。例如"#{ 1 + 1 }" 输出"2"

    还有几种方法可以区分男性或女性——例如,检查随机数是偶数还是奇数:

    name = if rand(1..100) % 2 == 0 ? "#{ males.sample }.#{ surnameMales.sample }" : "#{ females.sample }.#{ surnameFemales.sample }"
    @addresses << "#{ name }#{ number }@#{ providers.sample }"
    

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2011-06-04
      • 2021-01-02
      • 2018-06-03
      相关资源
      最近更新 更多