|
Jak sprawdzić, czy string pasuje do wzorca, zawierającego wildcards? |
|
|
|
Napisał: Berl
|
|
niedziela, 02 październik 2005 |
|
Jak wiadomo, wildcards to znaki zastępujące dowolny ciąg znaków (*) lub pojedynczy znak (?). Jeśli chcemy sprawdzić, czy jakiś string pasuje do wzorca zawierającego wildcards, możemy posłużyć się następującą funkcją :
function MatchPattern(element, pattern: PChar): Boolean;
function IsPatternWild(pattern: PChar): Boolean;
var
t: Integer;
begin
Result := StrScan(pattern, '*') <> nil;
if not Result then Result := StrScan(pattern, '?') <> nil;
end;
begin
if 0 = StrComp(pattern, '*') then Result := True
else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then Result := False
else if element^ = Chr(0) then Result := True
else begin
case pattern^ of
'*': if MatchPattern(element, @pattern[1]) then Result := True
else Result := MatchPattern(@element[1], pattern);
'?': Result := MatchPattern(@element[1], @pattern[1]);
else if element^ = pattern^ then Result := MatchPattern(@element[1], @pattern[1])
else Result := False;
end;
end;
end;
begin
StrPCopy(pSource, Source);
StrPCopy(pPattern, pattern);
Result := MatchPattern(pSource, pPattern);
end;
Funkcji tej używamy w sposób następujący :
if MatchPattern('Green Suit Software', '* Suit S?f?w?r?') then ShowMessage('Pasuje do wzorca.');Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. |