从电子邮件中猜出姓名

时间:2009-11-29 18:35:38

标签: ruby

是否有标准或简单的方法来猜测电子邮件地址中的名称,类似于gmail的名称?

例如,“john.smith@whoever.com”应该给“John Smith”。

这样做不应该太难(剥离域名,删除特殊字符,大写等),但我确信应该有现有代码。

Ruby中的代码是首选,但任何其他语言都可以。

6 个答案:

答案 0 :(得分:5)

def email_to_name(email)
  name = email[/[^@]+/]
  name.split(".").map {|n| n.capitalize }.join(" ")
end

p email_to_name("john.smith@foo.com")
# => "John Smith"

这是一项如此简单的任务,我怀疑你会发现任何“现有代码”这样做。

答案 1 :(得分:1)

下面的正则表达式可以解决您的问题

/(\w+)[._-](\w+)@.+/

答案 2 :(得分:1)

Gmail使用信封样式的电子邮件地址作为rfc-822的扩展程序之一。因此,只会猜测电子邮件地址是否为envolope形式,如下所示:Terry Terribad <terry@example.org>

对于gmail来说,这只是一个试图找出&lt;&gt;前面的内容的案例。通过解析电子邮件和一般猜测。

否则真的没有办法从我的电子邮件地址猜测我的名字是Chuck Vose因为我不使用chuck.vose或类似的东西。

答案 3 :(得分:0)

一个非常大的常用名和姓的字典,因为并非所有电子邮件地址都与实际名称相关。

如果您的所有邮件都来自一个国家/地区或文化,这可能会更好。

我不得不想知道你为什么要这样做。

答案 4 :(得分:0)

当你猜到这个名字时,这很有趣,因为用户没有在他们的电子邮件地址中使用他们的名字。就像一个人说的那样,你应该有一个常用名字典,你只会猜测你提取的单词(使用正则表达式)是否与字典中的名字相匹配。然而,让它填充一个完全错误和荒谬的人的姓名可能并不是一个坏主意,那么它可能是他们将其改为真实姓名的动机。 : - )

答案 5 :(得分:-3)

Regular expressions可能是要走的路。