![]() |
StrRScan auch mit String, nicht nur mit Char
guten abend.
ich suche eine funktion wie StrRScan mit der ich alles was in einem Substr in einem String kommt anzeigt. also StrRScan zeigt ja alles, nach dem letzten vorkommen eines ZEICHENS in einem String. und ich möchte also statt dem zeichen einen String angeben könnne. gibts auch auch eine Funktion? |
Re: StrRScan auch mit String, nicht nur mit Char
Delphi-Quellcode:
function StrRScanS(const S: string; const sub: string): integer;
var p, c: integer; begin Result:=-1; p:=Length(s)-Length(sub)+1; if p > 0 then repeat c:=1; while (sub[c] = s[p+c-1]) and (c <= Length(sub)) do Inc(c); if c = Length(sub)+1 then Result:=p; Dec(p); until (p = 0) or (Result > -1); end; |
Re: StrRScan auch mit String, nicht nur mit Char
Oder so:
Delphi-Quellcode:
Grüße vom marabu
function RPos(const subStr, s: string): integer;
var index: integer; begin Result := Pos(subStr, s); while Result <> 0 do begin // index := StrUtils.PosEx(subStr, s, Result + Length(subStr)); // fehlerhaft index := StrUtils.PosEx(subStr, s, Succ(Result)); if index = 0 then Break else Result := index; end; end; Fehler im Code berichtigt |
Re: StrRScan auch mit String, nicht nur mit Char
Die Idee von marabu hatte ich auch erst, aber leider hat der Algorithmus einen Fehler!
Er liefert für den Suchstring 'eiei' im String 'dreieieierlei' das Ergebnis 3, richtig aber wäre 5! |
Re: StrRScan auch mit String, nicht nur mit Char
Da hast du recht, Grishnak. Ich mache eine kleine Änderung, die die Performanz verringert, aber diesen Fehler beseitigt.
Herzlichen Dank für deinen akribischen Test. marabu |
Re: StrRScan auch mit String, nicht nur mit Char
das ist zwar anders als StrRScan, weil StrRScan einen String zurückliefert, aber das ist nicht weiter schlimm. das krieg ich dann schon hin ;)
also vielen dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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