Check if two NSStrings are similar

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.

  • How can I change font of UIBarButtonItem?
  • drops 113 error: Could not find specified service
  • Play AVMutableComposition with AVPlayer?
  • What is the expected behaviour of Facebook login?
  • No managedObjectContext defined in my AppDelegate
  • RTCReporting & errors
  • 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!

    3 Solutions Collect From Internet About “Check if two NSStrings are similar”

    The Soundex algorithm is useful in cases like this.

    I found a sample implementation on github.

    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.

    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.