Beispiel #1
0
        private static IEnumerable <string> Search(string directory, string searchString, bool searchSubdirectories, bool caseSensitive, bool useRegex, bool searchInTitle)
        {
            var isMatch = useRegex ? new Predicate <string>(x => Regex.IsMatch(x, searchString, caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase))
                : new Predicate <string>(x => x.IndexOf(searchString, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) >= 0);

            var files = Directory.GetFiles(directory, "*.docx", searchSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);

            foreach (var filePath in files)
            {
                string docxText = string.Empty;


                if (searchInTitle)
                {
                    docxText = System.IO.Path.GetFileNameWithoutExtension(filePath);
                }
                else
                {
                    try
                    {
                        using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        {
                            docxText = new DocxToStringConverter(stream).Convert();
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                if (!string.IsNullOrEmpty(docxText) && isMatch(docxText))
                {
                    yield return(filePath);
                }
            }
        }
Beispiel #2
0
        private static IEnumerable <string> Search(string directory, string searchString, bool searchSubdirectories, bool caseSensitive, bool useRegex)
        {
            var isMatch = useRegex ? new Predicate <string>(x => Regex.IsMatch(x, searchString, caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase))
                : new Predicate <string>(x => x.IndexOf(searchString, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) >= 0);

            foreach (var filePath in Directory.GetFiles(directory, "*.docx", searchSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly))
            {
                string docxText;
                //Console.WriteLine(filePath);
                using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    docxText = new DocxToStringConverter(stream).Convert();

                if (isMatch(docxText))
                {
                    yield return(filePath);
                }
            }
        }