in sdk/src/Core/Internal/Utils/StringExtension.cs [49:100]
public static bool WildcardMatch(this string text, string pattern, bool isCaseInsensitive = true)
{
if (pattern == null || text == null)
{
return false;
}
if (pattern.Length == 0)
{
return text.Length == 0;
}
if (IsWildcardGlob(pattern))
{
return true;
}
int i = 0, p = 0, iStar = text.Length, pStar = 0;
while (i < text.Length)
{
if (p < pattern.Length && text[i] == pattern[p])
{
++i;
++p;
}
else if (p < pattern.Length && isCaseInsensitive && char.ToLower(text[i]) == char.ToLower(pattern[p]))
{
++i;
++p;
}
else if (p < pattern.Length && '?' == pattern[p])
{
++i;
++p;
}
else if (p < pattern.Length && pattern[p] == '*')
{
iStar = i;
pStar = p++;
}
else if (iStar != text.Length)
{
i = ++iStar;
p = pStar + 1;
}
else
return false;
}
while (p < pattern.Length && pattern[p] == '*') ++p;
return p == pattern.Length && i == text.Length;
}