Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pos-Funktion rückwärts (https://www.delphipraxis.net/110257-pos-funktion-rueckwaerts.html)

Mooshead 15. Mär 2008 16:00


Pos-Funktion rückwärts
 
Hallo,

ich habe irgendwo in dem Forum mal von einer Funktion gelesen, die wie Pos einen Substring in einem String sucht, die Suche aber von hinten beginnt.

Bsp:

Delphi-Quellcode:
pos('a','Hallo an alle')
liefert den Wert 2 zurück.

Ich hätte aber gerne, dass die Funktion den Wert 4 zurück gibt.


Vielen Danke für eure Antworten

Christian Seehase 15. Mär 2008 16:01

Re: Pos-Funktion rückwärts
 
Moin Mooshead,

wenn Dir die Suche nach einem einzelnen Zeichen reicht, kannst Du LastDelimiter nehmen.

Mooshead 15. Mär 2008 16:04

Re: Pos-Funktion rückwärts
 
Vielen Dank,

das reicht für meine Zwecke

inherited 15. Mär 2008 16:04

Re: Pos-Funktion rückwärts
 
Delphi-Quellcode:
uses Strutils...

function PosBackward(substr, str: String): Integer;
begin
  result:=pos(substr, AnsiReverseString(str));
end;
Sollte dir "4" liefern, bei deinem Beispiel

omata 15. Mär 2008 16:15

Re: Pos-Funktion rückwärts
 
Hier nochmal ein weiters Beispiel...

Delphi-Quellcode:
function MyPos(search, subject:string; LeftToRight:boolean):integer;
var posi:integer;
    temp:string;
begin
  Result:=0;
  temp:=subject;
  repeat
    posi:=pos(search, temp);
    delete(temp, 1, posi);
    Result:=Result + posi;
  until   (    LeftToRight and (posi >= 0))
        or (not LeftToRight and (posi = 0));
  if not LeftToRight and (Result > 0) then
    Result:=length(subject) - Result +1;
end;
Gruss
Thorsten

ATS3788 1. Jan 2011 19:34

AW: Pos-Funktion rückwärts
 
Danke genau was ich gesucht habe:thumb:

himitsu 1. Jan 2011 20:23

AW: Pos-Funktion rückwärts
 
Die vielen Delete in der Schleife sind eher suboptimal,
dann doch lieber "nur" 2 Stringoperationen.
Delphi-Quellcode:
Result := Length(str) - Length(substr) - Pos(AnsiReverseString(substr), AnsiReverseString(str)) + 2;
[edit]
siehe http://www.delphipraxis.net/105585-p...ml#post1071689

Namenloser 1. Jan 2011 20:27

AW: Pos-Funktion rückwärts
 
Sehr schnell dürfte das aber nicht sein mit
Delphi-Quellcode:
Delete()
. Es gab übrigens neulich erst einen Thread dazu: "Pos von hinten"
(ich find den Titel ja etwas zweideutig :duck:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz