Fuzzy String Matching in Swift using Levenshtein Distance. Ported from the python fuzzywuzzy library https://github.com/seatgeek/fuzzywuzzy
It has no external dependancies. And thanks to Swift String, it can support multi-language.
Add the following line to your Cartfile. And run carthage update
github "lxian/Fuzzywuzzy_swift"
Add the following line to your Podfile. And run pod install
pod 'Fuzzywuzzy_swift', :git=> 'https://github.com/lxian/Fuzzywuzzy_swift.git'
drag the Fuzzywuzzy_swift
folder into your project
import Fuzzywuzzy_swift
String.fuzzRatio(str1: "some text here", str2: "same text here!") // => 93
Partial Ratio tries to match the shoter string to a substring of the longer one
String.fuzzPartialRatio(str1: "some text here", str2: "I found some text here!") // => 100
Split strings by white space into arrays of tokens. Sort two arrays of Tokens. Calculate the effort needed to transform on arry of token into another. Characters other than letters and numbers are removed as a pre-processing by default.
String.fuzzTokenSortRatio(str1: "fuzzy wuzzy was a bear", str2: "wuzzy fuzzy was a bear") // => 100
String.fuzzTokenSortRatio(str1: "fuzzy+wuzzy(was) a bear", str2: "wuzzy fuzzy was a bear") // => 100
set fullProcess to false to remove this pre-processing
String.fuzzTokenSortRatio(str1: "fuzzy+wuzzy(was) a bear", str2: "wuzzy fuzzy was a bear", fullProcess: false) // => 77
Similiar to token sort ratio while it put tokens into a set trying to remove duplicated tokens.
String.fuzzTokenSortRatio(str1: "fuzzy was a bear", str2: "fuzzy fuzzy was a bear") // => 84
String.fuzzTokenSetRatio(str1: "fuzzy was a bear", str2: "fuzzy fuzzy was a bear") // => 100