4

我提出了一个棘手的问题,我不确定如何解决。因此,我制定了一个包含字典的 plist,其中包含两个对象:

  • 国家名称
  • 国家插头尺寸

不过,只有 210 个国家/地区/事实。

而且,我已经启用了搜索许多国家的列表,其中可能存在或不存在事实。但这是我的问题,我正在使用一个名为 Geonames 的网络服务,用户可以使用搜索栏显示控制器来搜索国家,而这些与插头尺寸配对的 plist 国家名称实际上来自 Wikipedia 文章。

现在,Geonames 中的国家名称和我在 Wikipedia 的 plist 中的名称可能略有不同,可能带有额外的空格、额外的破折号、额外的字母。这就是为什么我想查看地理名称国家字符串是否与 plist 中的字符串非常相似。

所以,这不会是isEqualToString:因为如果它是准确的,该compare:方法可以工作吗?

我该如何处理?这是一个例子:

Geoname 返回(不是一个真实的国家,只是一个例子):

  • 依婷

但是 plist 可能会返回:

  • 依婷

所以有1个额外的't',但还有其他情况。我希望将它们进行比较,或者至少相似,因此我可以将它们视为匹配项。

是否有任何教程、资源、项目等您可以指点我?

谢谢!再见!

4

3 回答 3

5

Soundex算法在这种情况下很有用。

我在 github 上找到了一个示例实现。

于 2012-10-20T02:01:34.970 回答
2

You may find this post about auto update/complete useful:

I've tested that UITextViews work well while adhering to the UITextViewDelegate protocol in your UIViewController class and will produce a result similar to what you'll find in the Messages app. I haven't checked if UITextField and UITextFieldDelegate do as well.

Autocomplete/Autocorrect

于 2012-10-20T01:47:00.533 回答
2

您需要实现一种算法来近似匹配字符串。最流行的此类算法之一是Levenshtein distance,它是几种编辑距离算法之一。距离计算为将字符串 A 转换为字符串 B 所需的编辑操作次数 - 插入、删除或更改字符计为一次编辑操作。字符串越近,它们之间的编辑距离就越小。您可以计算成对编辑距离,并找到最小的一个来识别匹配。

于 2012-10-20T01:30:49.977 回答