Check if two NSStrings are similar

我只是一个虾纸丫 提交于 2019-11-26 22:05:51

问题


I present a tricky question that I am not sure how to approach. So, I have formulated a plist containing dictionaries which contain two objects:

  • The Country Name
  • The Plug Size Of The Country

There are only 210 countries/facts though.

And, I have enabled to search through a list of many many countries, in which there might be a fact or not. But here is my problem, I am using a web service called Geonames and the user can use a search bar display controller to search for countries, and these plist country names paired with plug sizes are actually from a Wikipedia article.

Now, the country naming in Geonames and in my plist from Wikipedia might be named slightly different, maybe with an extra space, an extra dash, an extra letter. This is why I want to see if the geoname country string is very similar to the one in the plist.

So, this would not be isEqualToString: because that finds if it is exact, can the compare: method work?

How can I approach this? Here is an example:

Geoname returns (not a real country just an example):

  • Yiting

But plist may return:

  • Yitting

So with 1 extra 't', but there are other circumstances. I would like these to be compared as exact, or at least similar, so I could consider them as a match.

Are there any tutorials, resources, projects etc. you could point me towards?

Thank you! Bye!


回答1:


The Soundex algorithm is useful in cases like this.

I found a sample implementation on github.




回答2:


You need to implement an algorithm for approximate matching of strings. One of the most popular such algorithms is Levenshtein distance, one of several Edit distance algorithms. The distance is calculated as the number of editing operations required to transform string A into string B - inserting, deleting, or changing a character counts as one edit operation. The closer are the strings, the smaller is the edit distance between them. You can calculate pairwise edit distances, and find the smallest one to identify the match.




回答3:


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.



来源:https://stackoverflow.com/questions/12984442/check-if-two-nsstrings-are-similar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!