티스토리 뷰

C#

C#: FileName(string)에 WildCard 검색 적용

개태형님 2021. 2. 28. 17:47

일반적인 파일 경로에서 WildCard를 적용하여 파일을 찾는 방법은 .NET에 기본적으로 구현되어 있다.

string[] fileNames = Directory.GetFiles(@"C:\Users\Me\Documents", "*.docx");

 

 

하지만 실제 경로가 아닌, 단순히 파일명만 있는 상황이라면?

순수 문자열에 대한 WildCard를 적용해야 할 것이다.

codeproject에 예제가 있어서 정리 해둔다.

    public static class StringExtension
    {
        public static bool IsMatchByPattern(this string src, string pattern, bool ignoreCare = false)
        {
            if (string.IsNullOrWhiteSpace(pattern)) return false;
            if (pattern == "*" || pattern == "*.*") return true;

            pattern = pattern.Replace(@"*", "\xfc");
            pattern = pattern.Replace(@"?", "\xfd");
            pattern = pattern.Replace(@"#", "\xfe");

            pattern = Regex.Escape(pattern);

            pattern = pattern.Replace("\xfc", @".*[^.]");
            pattern = pattern.Replace("\xfd", @".");
            pattern = pattern.Replace("\xfe", @"[0-9]");

            var option = RegexOptions.Compiled;
            if (ignoreCare)
            {
                option |= RegexOptions.IgnoreCase;
            }

            return Regex.IsMatch(src, pattern, option);
        }
    }

출처 : www.codeproject.com/Messages/885369/Wildcard-filename-pattern-matching-for-csharp.aspx

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday