很多联系人管理程序都这样做 – 你键入一个名称(例如,“约翰·史密斯”),它会自动将其内部分为:
名字:约翰
中间名:W.
姓:史密斯
同样,它阐述了诸如“简·史密斯夫人”和“约翰·多·约翰博士”正确的(假设你允许字段像“前缀”和“后缀”的名称)。
我认为这是一个相当普遍的事情,人们会想做…所以问题是…你会怎么做?有没有一个简单的算法为此?也许是正则表达式?
我在.NET解决方案后,但我不挑剔。
更新:我明白,没有一个简单的解决方案,这涵盖所有边缘情况和文化…但让我们说,为了争论,你需要的名称片断(填写表格 – 如说,税或其他政府表格 – 是一种情况,你必须输入固定字段中的名称,无论你喜欢与否),但你不一定要强迫用户输入他们的名字到离散字段(较少打字=更容易新手用户)。
你可能想让程序“猜”(尽可能最好的)什么是第一,中间,最后,等等。如果可以,看看Microsoft Outlook如何联系人 – 它让你键入名称,但是,如果你需要澄清,有一个额外的小窗口,你可以打开。我会做同样的事情 – 给用户的窗口,以防他们想输入离散片段的名称 – 但允许在一个框中输入名称,并做一个“最好的猜测”,涵盖最常见的名称。
没有简单的解决方案。名称建构因文化而异,甚至在英语世界中,前缀和后缀不一定是名称的一部分。
一个基本的方法是在字符串的开头(例如“Hon。John Doe”)和数字或在结尾处的一些其他字符串(例如,“John Doe IV”,“John Doe Jr.”)查找荣誉,但真正所有你能做的是应用一套启发式和希望最好的。
可能有用的是找到未处理的名称的列表,并针对它测试您的算法。我不知道有什么预先包装在那里,虽然。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。