代码之家  ›  专栏  ›  技术社区  ›  Ralf

从电子邮件猜测姓名

  •  4
  • Ralf  · 技术社区  · 15 年前

    有没有一个标准或简单的方法来猜测一个名字从电子邮件地址,类似于Gmail做什么?

    例如,“john.smith@whole.com”应该给出“john smith”。

    这样做不应该太难(去掉域名、删除特殊字符、大写等),但我相信应该有现有的代码。

    最好使用Ruby代码,但任何其他语言都可以。

    6 回复  |  直到 15 年前
        1
  •  5
  •   August Lilleaas    15 年前
    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"
    

    这是一项如此简单的任务,我怀疑您是否会发现任何“现有代码”正在执行此操作。

        2
  •  1
  •   Piotr Czapla    15 年前

    下面的regex可以解决您的问题

    /(\w+)[._-](\w+)@.+/
    
        3
  •  1
  •   Chuck Vose    15 年前

    Gmail使用信封样式的电子邮件地址作为对RFC-822的扩展之一。因此,它只猜测电子邮件地址是否是这样的envolope格式: Terry Terribad <terry@example.org> .

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

    否则,真的无法从我的电子邮件地址猜测我的名字是查克沃斯,因为我不使用查克沃斯或类似的东西。

        4
  •  0
  •   Joe Mabel    15 年前

    还有一本非常大的常用名和姓词典,因为不是所有的电子邮件地址都能和实际的名字很好地联系在一起。

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

    不过,我真想知道你为什么要这么做。

        5
  •  0
  •   Brian T. Hannan    15 年前

    当你猜到名字的时候,这会很有趣,因为用户没有在他们的电子邮件地址中使用他们的名字。就像一个人说的那样,你应该有一本普通名字的字典,你只能猜测你提取的单词(使用正则表达式)是否与字典中的名字匹配。然而,让它填充一个完全错误和荒谬的b/c的名字也许不是一个坏主意,然后它可以激励他们把它改成真实的名字。-)

        6
  •  -3
  •   James Allen    15 年前

    Regular expressions 可能是要走的路。