Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pos wie oft? (https://www.delphipraxis.net/90169-pos-wie-oft.html)

mkinzler 12. Apr 2007 19:25

Re: Pos wie oft?
 
Man könnte es auch mit der c-String-Funktion StrScan() versuchen

himitsu 13. Apr 2007 07:02

Re: Pos wie oft?
 
Am Einfachten CountStringCountString, oder ähnliche Funktionen,

Zitat:

Zitat von Matze
Pos sucht vom Anfang des Strings an das erste Vorkommen des Suchstrings. Wenn du natürlich manuell den Link von vorne kürzt, kommst du auch mit Pos aus, aber bei PosEx kann man festlegen, ab welcher Stelle gesucht werden soll, was daher viel einfacher ist.

Also wie schon gesagt, Pos such von Anfang an, findet also immer nur das erste Vorkommen, es sei den du entfernst es vorm nächsten Suchdurchgang.

PosEx sucht von da an, wo du es festlegst.


Delphi-Quellcode:
Anz := 0;
i  := 1;
While PosEx(Search, S, i) > 0 do Begin
  Inc(Anz);
  i := PosEx(Search, S, i) + 1;
End;

Anz = Anzahl der Vorkommen mit Überschneidung

// **************

Anz := 0;
i  := 1;
While PosEx(Search, S, i) > 0 do Begin
  Inc(Anz);
  i := PosEx(Search, S, i) + Length(Auto);
End;

Anz = Anzahl der Vorkommen OHNE Überschneidung

// **************

Anz := 0;
While Pos(Search, S) > 0 do Begin
  Inc(Anz);
  Delete(S, Pos(Search, S), Length(Search));
  //Delete(S, Pos(Search, S), 1); << alternativ für die Version mit Überschneidung
End;
// man kann den gefunden String auch gegen etwas ersetzen,
// wo der Suchstring aber nicht drin enthalten sein darf

Anz = Anzahl der Vorkommen OHNE Überschneidung
Delphi-Quellcode:
Search := 'XXX';
S     := 'XXX XXXXX XXXX';
erster Code sagt 6
Code:
'XXX XXXXX XXXX'
 111 222   555
      333   666
       444
und Zweiter meint 3 (was CountString entspricht)
Code:
'XXX XXXXX XXXX'
 111 222   333
[add]
OK, noch ein Code mit POS für mkinzler :angel:

Zitat:

Zitat von mkinzler
Ohne PosEx() funktioniert dein Code aber auch nicht.

Hab ich was anderes behauptet?

mkinzler 13. Apr 2007 07:07

Re: Pos wie oft?
 
@himitsu: Ohne PosEx() funktioniert dein Code aber auch nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Seite 2 von 2     12   

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