2015-01-07 38 views
2
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 

我想要做的就是选择一个随机数,名字,姓氏和供应商,并把它们放在一起+在姓氏的末尾加上一个随机数,以便它看起来,例如,像这样:[email protected],但有点卡住了,我必须把整个事情放在一起。您可能会说,我想创建一个100随机电子邮件用于测试目的。如何用Ruby创建电子邮件地址生成器?

你能指点我怎么能做我打算做的事Ruby

+0

为了测试什么?您将只以多种格式之一生成电子邮件地址。可接受的格式列表比大多数人意识到的要长很多,这使得创建一个任何值得的验证器都很困难。如果您只需要一种“[email protected]”形式,那么当然,您的代码将起作用。如果你需要测试一个电子邮件网关或验证器,那么不,它不会。 –

+0

@theTinMan我需要生成一些内容,以向我的客户展示电子邮件在网站给定部分的外观。我想尽可能使它们看起来逼真,因此我这样做了。基本上测试并不是正确的方式来调用它我猜,更像测试“它会工作”。 ;)由于需要本地化这些电子邮件,我也没有使用Faker。 – Xeen

回答

2

使用字符串插值和Array#sample的组合。

"#{females.sample}.#{surnameFemales.sample}#{rand(252...4350)}@#{providers.sample}" 
>> "[email protected]" 
1

有一个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 }" 
9

你的目标是做这个练习还是这只是你想要完成的事情?如果是后者,安装faker gem,只是使用它:

Faker::Internet.email #=> "[email protected]" 

为100:

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

啊。这个好运气的宝贝!我忘了一切! –