AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String durchsuchen

Ein Thema von Borti · begonnen am 28. Jan 2006 · letzter Beitrag vom 28. Jan 2006
Antwort Antwort
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

String durchsuchen

  Alt 28. Jan 2006, 11:09
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
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: String durchsuchen

  Alt 28. Jan 2006, 11:14
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.
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: String durchsuchen

  Alt 28. Jan 2006, 12:10
Hallo,

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

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#4

Re: String durchsuchen

  Alt 28. Jan 2006, 12:19
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
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz