AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi String zwischen 2 bekannten Teilstrings ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

String zwischen 2 bekannten Teilstrings ermitteln

Ein Thema von fui-tak · begonnen am 22. Nov 2009 · letzter Beitrag vom 22. Nov 2009
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#3

Re: String zwischen 2 bekannten Teilstrings ermitteln

  Alt 22. Nov 2009, 14:29
- ein paar Leerzeichen und Zeilenumbrüche könnten nicht schaden (die Scrollbalken bei mir schreien danach)
- die beiden letzen Parameter (abErstesZeichen,bisLetztesZeichen) finde ich etwas umständlich,
vorallem da man die Indize (zeichen1nummer,zeichen2nummer) dennoch angeben muß, selbst wenn man sie dann nicht benötigt
[edit]
und schon hatte ich diese Parameter falsch verstanden (siehe nächsten Punkt)
drum mal 'ne 2. Version angehängt
[/edit]
- die Parameternamen sind etwas unglücklich
hinter zeichen1nummer und zeichen2nummer würde ich nicht das verstehen, was du meinst
zeichen1 und zeichen2 müssen keine Zeichen sein ... dort passen ja wohl auch ganze Strings rein
- Suchen durch Löschen ist nicht unbedingt optimal ... unnötige und langsame Stringoperationen


Delphi-Quellcode:
Function TextBetween(Const S, StartSearch, StopSearch: String;
    StartIndex: Integer = 1; StopIndex: Integer = -1): String;
  Var i, i2:integer;

  Begin
    Result := '';
    i2 := 1;
    If StopIndex = -1 Then Begin
      Repeat
        i := PosEx(StopSearch, S, i2);
        If i = 0 Then
          If i2 <> 1 Then Break Else Exit;
        i2 := i;
      Until False;
    End Else
      Repeat
        i2 := PosEx(StopSearch, S, i2);
        If i2 = 0 Then Exit;
        Dec(StopIndex);
      Until StopIndex = 0;
    i := 1;
    Repeat
      i := PosEx(StartSearch, S, i);
      If i = 0 Then Exit;
      Dec(StartIndex);
    Until StartIndex = 0;
    Result := Copy(S, i + Length(StartSearch), i2 - i - Length(StartSearch));
  End;
StopIndex nicht angegeben, dann wird der zuletzt gefundene String genommen

und sind hier die lezten Parameter nicht angegeben (oder -1), dann wird der Stringanfang, bzw. das Stringende genommen
Delphi-Quellcode:
Function TextBetween(Const S, StartSearch, StopSearch: String;
    StartIndex: Integer = -1; StopIndex: Integer = -1): String;
  Var i, i2:integer;

  Begin
    Result := '';
    i := 1;
    If StartIndex <> -1 Then Begin
      Repeat
        i := PosEx(StartSearch, S, i);
        If i = 0 Then Exit;
        Dec(StartIndex);
      Until StartIndex = 0;
      Inc(i, Length(StartSearch));
    End;
    i2 := 1;
    If StopIndex <> -1 Then Begin
      Repeat
        i2 := PosEx(StopSearch, S, i2);
        If i2 = 0 Then Exit;
        Dec(StopIndex);
      Until StopIndex = 0;
    End Else i2 := Length(S) + 1;
    Result := Copy(S, i, i2 - i);
  End;
(Codes ungetestet)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz