Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StrRScan auch mit String, nicht nur mit Char (https://www.delphipraxis.net/53375-strrscan-auch-mit-string-nicht-nur-mit-char.html)

n0b0dy 15. Sep 2005 00:44


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?

Grishnak 15. Sep 2005 02:02

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;

marabu 15. Sep 2005 07:40

Re: StrRScan auch mit String, nicht nur mit Char
 
Oder so:

Delphi-Quellcode:
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;
Grüße vom marabu

Fehler im Code berichtigt

Grishnak 15. Sep 2005 07:48

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!

marabu 15. Sep 2005 08:03

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

n0b0dy 15. Sep 2005 09:27

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