我有一堆人的名字。它们都是“西方”名称,我只需要美国的惯例/缩写(例如,先生代替高级先生)。不幸的是,我要向其发送邮件的人员没有输入自己的姓名,因此我无法问他们想要被叫什么。我知道每个人的性别及其全名,但是还没有真正具体地分析过事情。
一些例子:
我希望能够解析每个名称的一部分:
name = Name.new("John Smith Jr.") name.first_name # <= John name.greeting # <= Mr. Smith
如果我正在寻找“打招呼”(可能不是最好的术语),我想要的是1-4号的“史密斯先生”。我想给史密斯博士5英镑,但我选择了史密斯先生。
一个Ruby的宝石将是理想的。Chronic启发了我,我要一个奇怪的东西,它是一种以非常人性化的方式处理时间的Ruby宝石,可以让我正确地告诉它“上周二”并提出有意义的东西。”某些算法足以满足大多数需求的情况下。
我正在尝试解决程序员认为名称错误的问题
由于您仅限于使用西式名称,因此我认为一些规则可以帮助您达到最佳状态:
{ mr mrs miss ms rev dr prof }
[mr=1, mrs=1, rev=2, dr=3, prof=4]
{ jr phd }
/[XVI]+/
绝不可能保证正确解析“ John Baxter Smith”之类的名称,因为并非所有双管姓都使用连字符。“ Baxter Smith”是姓吗?还是“ Baxter”是中间名?我认为可以肯定地说中间名比双枪但不带连字符的姓相对普遍,这意味着最好默认使用姓氏作为姓氏。您可能还需要编译常见的双管姓氏列表,然后对此进行检查。