티스토리 뷰
일반적인 파일 경로에서 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
'C#' 카테고리의 다른 글
C#: OverlayDialog (불투명한 배경의 Dialog) (0) | 2021.09.21 |
---|---|
C#: 아이콘 폰트를 사용해보자. (webdings, wingdings) (0) | 2021.03.28 |
C#: WinForm TitleBar에 DarkMode 적용하기 (0) | 2021.02.20 |
C#: Windows Forms(WinForm) -> .NET 5 마이그레이션 (0) | 2021.02.12 |
C#: Label 더블클릭시 Text가 복사되는 현상(버그?) 처리 (0) | 2021.02.07 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday