Thema: Delphi Pos wie oft?

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#12

Re: Pos wie oft?

  Alt 13. Apr 2007, 07:02
Am Einfachten CountStringCountString, oder ähnliche Funktionen,

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

Zitat von mkinzler:
Ohne PosEx() funktioniert dein Code aber auch nicht.
Hab ich was anderes behauptet?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat