private void LevenshteinDistanceToExplicit(LevenshteinMethod method) { int dist; dist = "kitten".LevenshteinDistanceTo("sitting", method); Assert.AreEqual(3, dist); dist = "Saturday".LevenshteinDistanceTo("Sunday", method); Assert.AreEqual(3, dist); dist = "acc".LevenshteinDistanceTo("ac", method); Assert.AreEqual(1, dist); dist = "foo".LevenshteinDistanceTo("four", method); Assert.AreEqual(2, dist); dist = "foo".LevenshteinDistanceTo("foo", method); Assert.AreEqual(0, dist); dist = "cow".LevenshteinDistanceTo("cat", method); Assert.AreEqual(2, dist); dist = "cat".LevenshteinDistanceTo("moocow", method); Assert.AreEqual(5, dist); dist = "cat".LevenshteinDistanceTo("cowmoo", method); Assert.AreEqual(5, dist); dist = "sebastian".LevenshteinDistanceTo("sebastien", method); Assert.AreEqual(1, dist); dist = "more".LevenshteinDistanceTo("cowbell", method); Assert.AreEqual(5, dist); dist = "freshpack".LevenshteinDistanceTo("freshpak", method); Assert.AreEqual(1, dist); dist = "freshpak".LevenshteinDistanceTo("freshpack", method); Assert.AreEqual(1, dist); }
public static IOrderedEnumerable<string> OrderByLevenshteinDistanceTo(this IEnumerable<string> strings, string target, LevenshteinMethod method, bool descending) { if (descending) return strings.OrderByDescending(s => s.LevenshteinDistanceTo(target, method)); return strings.OrderBy(s => s.LevenshteinDistanceTo(target, method)); }
public static int LevenshteinDistanceTo(this string source, string target, LevenshteinMethod method) { switch (method) { case LevenshteinMethod.Matrix: return LevenshteinCalculator.CalculateMatrix(source, target); case LevenshteinMethod.Vector: return LevenshteinCalculator.CalculateVector(source, target); case LevenshteinMethod.Recursive: return LevenshteinCalculator.CalculateRecursive(source, target); case LevenshteinMethod.Damerau: return new DamerauLevenshteinDistanceMetric().GetDistance(source, target, -1); // May change to static call here, seperating each method to a seperate static class default: throw new ArgumentException("Invalid method."); } }
public static IOrderedEnumerable<string> OrderByLevenshteinDistanceTo(this IEnumerable<string> strings, string target, LevenshteinMethod method) { return strings.OrderByLevenshteinDistanceTo(target, method, false); }