Hallo, diese Funktion liefert einen Teilstring aus einem String zurück. Der Teilstring befindet sich zwischen 2 bekannten Teilstrings, die auch häufiger vorkommen können.
Delphi-Quellcode:
function wertZwischen(inString,zeichen1:string;zeichen1nummer:integer;zeichen2:string;
zeichen2nummer:integer;abErstesZeichen,bisLetztesZeichen:boolean):string;
var pos1,pos2:integer;
function positionSuchen(hauptstring,suchstring:string;nummerSuchstring:integer):integer;
var
i,laenge,pos1,poszaehler: integer;
begin
poszaehler := 0;
for i := 0 to nummerSuchstring-2 do
begin
pos1 := Pos(suchstring,hauptstring);
laenge := Length(suchstring);
poszaehler := poszaehler+laenge;
Delete(hauptstring,pos1,laenge);
end;
if Pos(suchstring,hauptstring) > 0 then
Result := Pos(suchstring,hauptstring)+poszaehler
else Result := 0;
end;
begin
if not abErstesZeichen then
pos1 := positionSuchen(inString,zeichen1,zeichen1nummer) + Length(zeichen1)
else pos1 := 1;
if not bisletztesZeichen then
pos2 := positionSuchen(inString,zeichen2,zeichen2nummer)
else pos2 := Length(inString)+1;
Result := Copy(inString,pos1,pos2-pos1);
end;
Zur Verwendung:
Delphi-Quellcode:
var s,teilstring:string;
...
s := '1.2.3.4.5.6.7.8.9';
//nun möchte ich den Wert zwischen '1.2.3.' und '.9' haben, genauer zwischen dem dritten und dem achten Punkt
teilstring := wertZwischen(s,'.',3,'.',8,false,false);
//teilstring ist jetzt '4.5.6.7.8'
//nun möchte ich den Wert vom Anfang bis '3' haben
teilstring := wertZwischen(s,'',0,'3',1,true,false);
//teilstring ist jetzt '1.2.'
//nun möchte ich den Wert zwischen '2.3.' bis zum Ende haben
teilstring := wertZwischen(s,'2.3.',1,'',0,false,true);
//teilstring ist jetzt '4.5.6.7.8.9'
-Der erste Parameter (inString) ist der String, in dem gesucht werden soll
-Der zweite Parameter (zeichen1) ist der String, vor dem gesuchten Wert
-Der dritte Parameter (zeichen1nummer) ist die Nummer des Strings vor dem gesuchten Wert (z.B. wenn man nach dem Wert hinter dem dritten '.' sucht, schreibt man hier 3 hinein)
-Der vierte Parameter (zeichen2) ist der String, hinter dem gesuchten Wert
-Der fünfte Parameter (zeichen2nummer) ist die Nummer des Strings hinter dem gesuchten Wert
-Der sechste Parameter (abErstesZeichen) gibt an, ob der gesuchte Wert beim ersten Zeichen des Strings beginnt. Wenn ja, dann ist er true und der zweite und dritte Parameter sind egal
-Der siebte Parameter (bisLetztesZeichen) gibt an, ob der gesuchte Wert bis zum letzten Zeichen des Strings geht. Entsprechend dem sechsten Parameter