![]() |
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:
liefert den Wert 2 zurück.
pos('a','Hallo an alle')
Ich hätte aber gerne, dass die Funktion den Wert 4 zurück gibt. Vielen Danke für eure Antworten |
Re: Pos-Funktion rückwärts
Moin Mooshead,
wenn Dir die Suche nach einem einzelnen Zeichen reicht, kannst Du LastDelimiter nehmen. |
Re: Pos-Funktion rückwärts
Vielen Dank,
das reicht für meine Zwecke |
Re: Pos-Funktion rückwärts
Delphi-Quellcode:
Sollte dir "4" liefern, bei deinem Beispiel
uses Strutils...
function PosBackward(substr, str: String): Integer; begin result:=pos(substr, AnsiReverseString(str)); end; |
Re: Pos-Funktion rückwärts
Hier nochmal ein weiters Beispiel...
Delphi-Quellcode:
Gruss
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; Thorsten |
AW: Pos-Funktion rückwärts
Danke genau was ich gesucht habe:thumb:
|
AW: Pos-Funktion rückwärts
Die vielen Delete in der Schleife sind eher suboptimal,
dann doch lieber "nur" 2 Stringoperationen.
Delphi-Quellcode:
[edit]
Result := Length(str) - Length(substr) - Pos(AnsiReverseString(substr), AnsiReverseString(str)) + 2;
siehe ![]() |
AW: Pos-Funktion rückwärts
Sehr schnell dürfte das aber nicht sein mit
Delphi-Quellcode:
. Es gab übrigens neulich erst einen Thread dazu: "Pos von hinten"
Delete()
(ich find den Titel ja etwas zweideutig :duck:) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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