Wie kann ich zwei Strings mit Wildscards miteinander vergleichen?
Diese Funktion vergleicht zwei Strings miteinander. Der erste String kann jedes
beliebiges Zeichen außer den Wildcards ? und * enthalten.
Der zweite kann so viele Wildcards beinhalten wie man will.
Zum Beispiel würde MatchStrings('Sean Stanley', '*St*') true zurückgeben.
Orignal code by Sean Stanley in C, rewritten in Delphi by David Stidolph
function MatchStrings(source, pattern: String): Boolean; var pSource: Array [0..255] of Char; pPattern: Array [0..255] of Char; 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 StrComp(pattern,'*')=0 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;
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch: