コード例 #1
0
        public LevenshteinMatches LevenshteinTest(
            string str,
            string expression,
            int maxDistance,
            bool onlyBestResults,
            bool caseSensitive,
            LevenshteinMode mode
            )
        {
            LevenshteinMatches result = StringExtension.Levenshtein
                                            (str, expression, maxDistance, onlyBestResults, caseSensitive, mode);

            return(result);
            // TODO: add assertions to method StringExtensionTest.LevenshteinTest(String, String, Int32, Boolean, Boolean, LevenshteinMode)
        }
コード例 #2
0
        public static LevenshteinMatches Levenshtein(this string str, string pattern, int maxDistance = -1, bool onlyBestResults = false, bool caseSensitive = false, LevenshteinMode mode = 0)
        {
            str = System.Text.RegularExpressions.Regex.Replace(str, @"\p{C}+", string.Empty);//remove nonprintable characters
            str = str.Replace("\0", "");

            if (str == null || str.Length == 0 || pattern == null || pattern.Length == 0)
            {
                return(new LevenshteinMatches());
            }

            if (mode == LevenshteinMode.SingleMatixCPU)
            {
                return(str.LevenshteinSingleMatrixCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.SplitForSingleMatrixCPU)  //splits words
            {
                return(str.LevenshteinSplitForSingleMatrixCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.MultiMatrixSingleThreadCPU)
            {
                return(str.LevenshteinMultiMatrixSingleThread(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.MultiMatrixParallelCPU)
            {
                return(str.LevenshteinMultiMatrixParallel(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.SplitDualRowCPU)  //memory efficient
            {
                return(str.LevenshteinDualRowCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.ThreeDimMatrixCPU)
            {
                return(str.LevenshteinThreeDimMatrixCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.ThreeDimMatrixGPU)
            {
                return(gpu.LevenshteinSingleMatrixGPU(str, pattern, maxDistance, onlyBestResults, caseSensitive));
                //return str.LevenshteinSingleMatrixGPU(pattern, maxDistance, onlyBestResults, caseSensitive);
            }
            else if (mode == LevenshteinMode.ThreeDimMatrixParallelCPU)
            {
                return(str.LevenshteinThreeDimMatrixParallelCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.SplitForParallelCPU)
            {
                return(str.LevenshteinSplitForParallelCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else if (mode == LevenshteinMode.HistogramCPU)
            {
                return(str.LevenshteinHistogramCPU(pattern, maxDistance, onlyBestResults, caseSensitive));
            }
            else
            {
                throw new NotImplementedException();
            }
        }