Einzelnen Beitrag anzeigen

fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#1

String zwischen 2 bekannten Teilstrings ermitteln

  Alt 22. Nov 2009, 15:03
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
  Mit Zitat antworten Zitat