コード例 #1
0
ファイル: StringExtensionsTests.cs プロジェクト: nikeee/nth
        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);
        }
コード例 #2
0
ファイル: EnumerableExtensions.cs プロジェクト: nikeee/nth
 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));
 }
コード例 #3
0
ファイル: StringExtensions.cs プロジェクト: nikeee/nth
 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.");
     }
 }
コード例 #4
0
ファイル: EnumerableExtensions.cs プロジェクト: nikeee/nth
 public static IOrderedEnumerable<string> OrderByLevenshteinDistanceTo(this IEnumerable<string> strings, string target, LevenshteinMethod method)
 {
     return strings.OrderByLevenshteinDistanceTo(target, method, false);
 }