hmm...
Delphi-Quellcode:
function stripsingle(s: string; notifbefore,c,notifafter: char): string;
var i,si,sc: Integer; //index, stringindex, stripcount
begin
setlength(Result,length(s))
si := 1;
if (s[1] <> c) or (s[2] = notifafter) then
begin
Result[si] := s[1];
Inc(si);
end;
for i := 2 to length(s)-1 do
if ((s[i] = c) and ((s[i+1] = notifafter) or (s[i-1] = notifbefore))) or (s[i] <> c)then
begin
Result[si] := s[i];
Inc(si);
end
else
Inc(sc);
if (s[length(s)] <> c) or (s[length(s)-1] = notifbefore) then
begin
Result[si] := s[length(s)];
Inc(si);
setlength(Result,si); //hoffe das löscht den string nicht....
end;
warum ist meine Funktion so viel kürzer als deine? aufrufen mit
text := stripsingle(text,#13,#10,#0);
Ach ja: performant ist die funktion keineswegs. man sollte lieber einen speicherbereich von der größe des ursprungsstrings belegen, dann die einzelnen chars zuweisen und zum schluss runterkürzen.
EDIT: habs nochmal angepasst...
EDIT: jetzt isses wahrscheinlich auch performant. werds aber mal testen.
EDIT: möp. funzt nicht. werds mal austesten....
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1