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) }
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(); } }