![]() |
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 |
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.
|
Re: String durchsuchen
Hallo,
seit einigen Delphi-Versionen gibt es die Funktion ![]() Gruß xaromz |
Re: String durchsuchen
Oder so:
Delphi-Quellcode:
Weiß grad nicht, ob es exakt stimmt, aber das ist die Methode ;)
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; 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:
air
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; |
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