Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#10

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 14:22
Ansonsten hätte ich dir eine meiner Funktionen empfohlen. Die habe ich damals bei Delphi 3 geschrieben, die hatte kein StringReplace. Die Funktion ist zwar für Strings, aber ich schätze die kann man für seine Bedürfnisse anpassen:

Delphi-Quellcode:
type
  TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); //Wichtig!!! Global setzen


function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

  function PosEx(Substr: string; S: string; Flag: TReplaceFlags): Integer;
  begin
    if rfIgnoreCase in Flag
    then Result := Pos(AnsiUpperCase(Substr), AnsiUpperCase(S))
    else Result := Pos(Substr, S);
  end;

var
  S2: String;
begin
  S2 := S;
  Result := '';
  while Length(S2) > 0 do begin
    if PosEx(OldPattern, S2, Flags) > 0 then begin
      Result := Result + Copy(S2, 1, PosEx(OldPattern, S2, Flags) - 1);
      Delete(S2, 1, PosEx(OldPattern, S2, Flags) + Length(OldPattern) - 1);
      Result := Result + NewPattern;
    end else begin
      Result := Result + S2;
      Delete(S2, 1, Length(S2));
    end;
    if not (rfReplaceAll in Flags) then begin
      Result := Result + S2;
      Delete(S2, 1, Length(S2));
    end;
  end;
end; {Popov}
  Mit Zitat antworten Zitat