bool WildcardCompare(LPCWSTR pFilter, LPCWSTR pString)
{
while (*pString && *pFilter != L'*')
{
if (*pFilter != *pString && *pFilter != L'?')
return false;
++pFilter;
++pString;
}
LPCWSTR pBaseFilter;
LPCWSTR pBaseString;
while (*pString)
{
if (*pFilter == L'*')
{
if (!*++pFilter)
return true;
pBaseFilter = pFilter;
pBaseString = pString;
}
else if (*pFilter == *pString || *pFilter == L'?')
{
++pFilter;
++pString;
}
else
{
pFilter = pBaseFilter;
pString = ++pBaseString;
}
}
while (*pFilter == L'*')
++pFilter;
return !*pFilter;
}
11 April, 2009
Wildcard comparer
Все наверное писали что-то подобное на тестах при поступлении на работу. И вот свершилось, wildcard comparer реально потребовался. Особенности алгоритма: несколько следующих друг за другом * считаются одной.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment