【发布时间】:2020-03-29 14:01:57
【问题描述】:
我有一个需要处理的大约 100,000 个名称的列表。有些是企业名称,有些是人名。不幸的是,有些较低,有些较高,有些混合。我正在寻找将它们转换为适当大小写的例程。 (有时称为混合或标题案例)。我意识到我可以遍历字符串并将每个开始新单词的字符大写。那将是一种非常简单的方法。对于企业来说,短词应该是小写的(of、with、for、...)。对于姓氏,如果以 Mc 开头,则第 3 个字母应大写(McDermot、McDonald 等)。罗马数字应始终大写(John Smith II)等。
我无法找到任何 Delphi 内置或其他例程。这肯定是存在的。我在哪里可以找到这个?
谢谢
【问题讨论】:
-
如果没有大量的库,我无法想象一个有意义的解决方案,所以这会变得过于宽泛或搜索离线资源。
-
Stackoverflow 不是工具推荐网站。显而易见的解决方案是自己实现这个功能。它不应该那么困难。到目前为止,您尝试过什么?
-
@Andy_D - “Delphi 有功能吗”是一个有效的问题。对于所有边缘情况,这不是一个小问题,否则我已经自己写了。
-
这个练习可能比最初看起来要复杂得多,因为没有关于专有名称的硬性规定。通常,针对一组规则(您需要自己设计)进行自动处理会留下 10% 以上的残留物,这些残留物要么是错误的,要么需要手动按摩。许多因素需要“政策”决策:例如SomeCo Inc 与 SomeCo Incorporated 是同一实体,这可能取决于您的目的。而且,对于像“E.I. du Pont de Nemours and Company”这样的名称适用什么规则?我们在数据中发现了 20 多个有效变体。
-
顺便说一句,免费软件 Systools 库 (sourceforge.net/projects/tpsystools/?source=directory) 包含几个函数,ExtractWord 和 WordCount,它们对于使用任意分隔符截取名称字符串并将它们重新组合成标准化格式非常方便。
标签: delphi text case-sensitive