Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: String in gleiche Bloecke teilen

  Alt 16. Nov 2006, 12:33
Hallo,

mit der folgenden Funktion berechne ich eine String-Kongruenz. Die Strings müssen gleich lang sein und dürfen das Maskierungszeichen nicht enthalten.

Delphi-Quellcode:
function CongruenceStr(s: TStrings; mask: Char): String;
var
  i, iPos: Integer;
  t: String;
begin
  if s.Count = 0 then
    Result := 'else
  begin
    Result := s[0];
    for i := 1 to Pred(s.Count) do
    begin
      t := s[i];
      for iPos := 1 to Length(Result) do
        if (Result[iPos] <> mask) and (t[iPos] <> Result[iPos]) then
          Result[iPos] := mask;
    end;
  end;
end;
Der Vorteil ist, dass jede Zeile nur einmal extrahiert wird - die Kongruenz wird zeilenweise bestimmt und nicht spaltenweise. Das Ergebnis ist ein String, der für übereinstimmende Spaltenwerte das entsprechende Zeichen aufweist oder im anderen Fall das Maskierungszeichen.

Grüße vom marabu
  Mit Zitat antworten Zitat