첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ Wildcard.cs

using System.Text.RegularExpressions;

namespace TestProject
{
    /// <summary>
    /// 와일드 카드
    /// </summary>
    public class Wildcard : Regex
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - Wildcard(filePattern)

        /// <summary>
        /// 생성자
        /// </summary>
        /// <param name="filePattern">파일 패턴</param>
        public Wildcard(string filePattern) : base(GetPattern(filePattern))
        {
        }

        #endregion
        #region 생성자 - Wildcard(filePattern, option)

        /// <summary>
        /// 생성자
        /// </summary>
        /// <param name="filePattern">파일 패턴</param>
        /// <param name="option">옵션</param>
        public Wildcard(string filePattern, RegexOptions option) : base(GetPattern(filePattern), option)
        {
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 패턴 구하기 - GetPattern(filePattern)

        /// <summary>
        /// 패턴 구하기
        /// </summary>
        /// <param name="filePattern">파일 패턴</param>
        /// <returns>패턴</returns>
        public static string GetPattern(string filePattern)
        {
            return "^" + Escape(filePattern).Replace("\\*", ".*").Replace("\\?", ".") + "$";
        }

        #endregion
    }
}

 

▶ Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            List<string> filePathList = new List<string>();

            filePathList.Add(@"C:\Test\File01.xml"  );
            filePathList.Add(@"C:\Test\File02.xml"  );
            filePathList.Add(@"C:\Test\Folder01.xml");
            filePathList.Add(@"C:\Test\Folder02.xml");
 
            Wildcard wildcard = new Wildcard("*File*.xml", RegexOptions.IgnoreCase);

            foreach(string filePath in filePathList.Where(filePath => wildcard.IsMatch(filePath)))
            {
                Console.WriteLine(filePath);
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요