ruby - 用定界符分隔电子邮件字符串

标签 ruby email

我有一组电子邮件地址(大约超过 50,000 个),我有兴趣计算特定电子邮件域的频率。例如,如果我有

emails = [
  'Johndoe@gmail.com',
  'Johndoe@yahoo.com', 
  'Johndoe@aol.com',
  'Johndoe@someuni.xyz.com',
  'Janedoe@gmail.com'
]

而且我对哪个电子邮件域出现最多感兴趣,我想以 2 的频率返回 'gmail'

为此,我认为遍历数组并丢弃 @ 之前发生的所有内容并将域保留为新数组是个好主意,然后我可以对其进行迭代.我该怎么做?

最佳答案

假设您的电子邮件是字符串,您可以这样做:

emails = ["Johndoe@gmail.com", "Johndoe@yahoo.com", "Johndoe@aol.com", "Johndoe@someuni.xyz.com", "Janedoe@gmail.com"]
counts = Hash.new(0)
emails.each { |t| counts[t.partition("@").last] += 1}
counts #{"gmail.com"=>2, "yahoo.com"=>1, "aol.com"=>1, "someuni.xyz.com"=>1} 

关于ruby - 用定界符分隔电子邮件字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37782752/

相关文章:

ruby-on-rails - Ruby - 检查文件是否为 CSV

ruby-on-rails - 使用 before_save 回调或自定义验证器添加验证错误?

html - 是否有一个 URL 参数可以使 URL 在特定命名的浏览器窗口中打开

python - 使用 python 提取电子邮件正文的第一行

html - Netsuite 电子邮件模板代码

Ruby 类间通信

ruby - 如何存储应用程序的首选项?

ruby-on-rails - 对具有不同格式( cucumber )的页面执行访问步骤的最佳方法

PHP发送批量邮件

html - 在响应式电子邮件上使用 block 属性跨度