Windows 下可以用 * ? 作为通配符对文件名或目录名进行匹配。程序中有时候需要做这样的匹配,但.Net framework 没有提供内置的函数来做这个匹配。我写了一个通过正则进行匹配的方法。
private static bool WildcardMatch(string text, string pattern, bool ignoreCase)
{
if (string.IsNullOrEmpty(pattern))
{
return true;
}
if (string.IsNullOrEmpty(text))
{
foreach (char c in pattern)
{
if (c != '*')
{
return false;
}
}
return true;
}
string regex = "^" + Regex.Escape(pattern).
Replace(@"\*", ".*").
Replace(@"\?", ".") + "$";
if (ignoreCase)
{
Match match = Regex.Match(text, regex, RegexOptions.IgnoreCase);
return match.ToString() == text;
}
else
{
Match match = Regex.Match(text, regex);
return match.ToString() == text;
}
}