Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String durchsuchen (https://www.delphipraxis.net/61933-string-durchsuchen.html)

Borti 28. Jan 2006 10:09


String durchsuchen
 
Guten Morgen!

Ich bin auf der Suche nach einer function. Und zwar muss ich einen String auf eine Zeichenfolge untersuchen. Diese Zeichenfolge kann aber mehrmals im String vorkommen. Die function Pos liefer mir aber immer nur den Index der ersten Zeichenfolge. Gibt es nicht für Strings sowas ähnliches wie FindFirst und FindNext?

Gruß.
Borti

mkinzler 28. Jan 2006 10:14

Re: String durchsuchen
 
Es gäbe noch die Möglichkeit es mit der Funktion StrScan zu versuchen diese liefert einen Zeiger auf das gefundene Zeichen (PChar), auf welches du die Funktion solange weiter anwenden kannst, bis kein Ergebnis mehr geliefert wird.

xaromz 28. Jan 2006 11:10

Re: String durchsuchen
 
Hallo,

seit einigen Delphi-Versionen gibt es die Funktion Delphi-Referenz durchsuchenPosEx. Da kann man angeben, ab welchem Zeichen gesucht werden soll.

Gruß
xaromz

Airblader 28. Jan 2006 11:19

Re: String durchsuchen
 
Oder so:

Delphi-Quellcode:
sBla: String;
iFound: Integer;

iSearch: Integer;
sSearch: String;
...

sBla := 'Dies ist ein TEST und der TESTet jetzt mal TESTweise auf das Wort TEST.';

iFound := 0;
sSearch := 'TEST';
iSearch := Pos(sSearch, sBla);

while((iSearch > 0) AND (Length(sBla) > 0)) do
begin
   Inc(iFound);
   Delete(sBla, iSearch, Length(sSearch));

   iSearch := Pos(sSearch, sBla);
end;
Weiß grad nicht, ob es exakt stimmt, aber das ist die Methode ;)
Solltest du sBla nicht verändern wollen, kopierst du es einfach in einen temporären String und benutzst den ;)

Edit: Oder als Funktion (ungetestet, kann sein, dass da das ein oder andere +1 bzw. -1 gemacht werden muss)

Delphi-Quellcode:
function CountWord(SubStr, SearchStr: String): Integer;
var
   iFound, iSearch: Integer;
begin
   iFound := 0;
   iSearch := Pos(Substr, Searchstr);
 
   while((iSearch > 0) AND (Length(SearchStr) > 0)) do
   begin
      Inc(iFound);
      Delete(SearchStr, iSearch, Length(SubStr));

      iSearch := Pos(SubStr, SearchStr);
   end;
 
   Result := iFound;
end;
air


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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