Registriert seit: 24. Aug 2012
103 Beiträge
FreePascal / Lazarus
|
AW: Muster in String
29. Nov 2015, 11:26
Jetzt hab ich was geschrieben, das wohl auch funktioniert. Vielleicht kann das auch jemand so gebrauchen:
Zum Testen eine Form mit Memo1 und Button1. Der . dient als Platzhalter.
Code:
function vergleich(erster,zweiter: string): string;
var
a: integer;
begin
Result := '';
if length(erster) <> length(zweiter) then begin Result := ''; exit; end;
for a := 1 to Length(erster) do begin
if erster[a] = zweiter[a] then begin
Result := Result+erster[a];
end;
if erster[a] <> zweiter[a] then begin
Result := Result+'.';
end;
end;
end;
function mustersuche(erster, zweiter: string): string; // Eigentliche FUnktion
var
a,max: integer;
temp_zweiter,temp, anzeige,muster_temp: string;
begin
temp := '';
for a := 1 to Length(erster) do begin temp := temp + '.'; end;
temp_zweiter := temp + zweiter + temp;
max := length(temp_zweiter)-length(temp);
for a := 0 to max-1 do begin
Delete(temp_zweiter, 1, 1);
anzeige := Copy(temp_zweiter,1,length(temp));
muster_temp := vergleich(erster,anzeige);
muster_temp := StringReplace(muster_temp, '.', '', [rfReplaceAll, rfIgnoreCase]);
if muster_temp <> '' then begin
Form1.Memo1.Lines.Add(anzeige + ' Gefundenes Muster -> '+ vergleich(erster,anzeige)); // Nur Treffer ansehen
end;
//Form1.Memo1.Lines.Add(anzeige + ' Gefundenes Muster -> '+ vergleich(erster,anzeige)); //kompletten vorgang ansehen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
mustersuche('a1b2cd3ef','ghi1j2kl3'); // ergibt => .1.2..3..
mustersuche('a123bcdef','ghij123kl'); // ergibt => .123.....
ShowMessage('Fertig');
end;
|
|
Zitat
|