/// <summary> /// 指定したワイルドカードに一致する箇所が、指定した入力文字列内に見つかるかどうかを判定します。 /// </summary> /// <param name="input">一致する対象を検索する文字列</param> /// <param name="pattern">対象を検索するパターン</param> /// <param name="options">ワイルドカードのオプション</param> /// <returns>一致する対象が見つかった場合は<see langword="true" /></returns> public static bool IsMatch(string input, string pattern, WildCardOptions options = WildCardOptions.SinglePattern) { return(ConvertRegexPatterns(pattern, options).Any(x => Regex.IsMatch(input, x))); }
/// <summary> /// ワイルドカードのパターンに対応する正規表現のパターンに変換します。 /// </summary> private static IEnumerable <string> ConvertRegexPatterns(string wildCardPattern, WildCardOptions options) { if (string.IsNullOrEmpty(wildCardPattern)) { return(Enumerable.Empty <string>()); } else if (options.HasFlag(WildCardOptions.MultiPattern)) { return(wildCardPattern.Split(new[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries) .Select(ConvertRegexPattern)); } else { return(new[] { ConvertRegexPattern(wildCardPattern) }); } }
/// <summary> /// インスタンスを初期化します。 /// </summary> /// <param name="pattern">対象を検索するパターン</param> /// <param name="options">ワイルドカードのオプション</param> public WildCard(string pattern, WildCardOptions options = WildCardOptions.SinglePattern) { _regexes = ConvertRegexPatterns(pattern, options).Select(x => new Regex(x)).ToArray(); }