Entwickler-Ecke

Sonstiges (Delphi) - Anzahl eines Teilstrings in ein einem String zurückgeben


Sorryman - Do 06.02.03 13:53
Titel: Anzahl eines Teilstrings in ein einem String zurückgeben
Hallo!

Ich brauche mal eure Hilfe!
Gibt es eine Funktion mit der ich die Anzahl eines bestimmten Teilstrings ausgeben kann welcher in einem anderen String enthalten ist?
Oder muss ich das selber programmieren?

LG Christian


Tino - Do 06.02.03 14:44

Hab Deine Frage nicht so ganz verstanden... aber ich tippe mal auf Copy.

Gruß
TINO


Udontknow - Do 06.02.03 14:56

Ich glaube, er will wissen, wie oft ein gewisser Teilstring in einem anderen String vorkommt.

Bitte sehr:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function CountSubStr(SubStr,Str:String):Integer;
begin
  Result:=0;
  while Pos(SubStr,Str)>0 do
  begin
    Inc(Result);
    Str:=StringReplace(Str,SubStr,'*',[]);
  end;
end;


Cu,
Udontknow


Sorryman - Do 06.02.03 14:57

Nein, das meine ich nicht!

Also nochmal:
Ich möchte wissen wie oft der String 'A' in dem String 'ABABABAB' enthalten ist, zum Beispiel!
Hier wären es 4 mal 'A'
Gibt es eine Funktion in Delphi, die mir das selber berechnet? Oder muss ich das selber programmieren?


Udontknow - Do 06.02.03 14:58

Äh? Jetzt bin ich auch verwirrt... :roll: Macht die gepostete Funktion nicht genau das?

Cu,
Udontknow


Sorryman - Do 06.02.03 15:10

Hmmm aber bei dem Befehl gibt er mir doch nur entweder einen String oder einen Wert vom Typ Array zurück...
Wie muss ich das denn programmieren, dass er mir aus 'ABABABAB' die Anzahl der 'A's zurückgibt???

Das is mir irgendwie nich schlüssig, wie das mit dem Befehl gehen soll...
Ich dachte immer Copy ist nur zum kopieren eines Strings!


smiegel - Do 06.02.03 15:38

Hallo,

versuche es einmal folgendermaßen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function AnzahlInString(suche, quelle:String):Integer;
var x:Integer;
begin
  Result:=0;
  x:=System.Pos(suche, quelle);
  while not (x=0) do
  begin
     Inc(Result);
     System.Delete(quelle, 1, x);
     x:=System.Pos(suche, quelle);
  end; // while
end; // AnzahlInString


Udontknow - Do 06.02.03 15:44

Gibt es irgendwelche Probleme mit dem Forum? Sieht niemand meine Funktion CountSubStr, die ich oben gepostet habe?

Cu,
Udontknow


smiegel - Do 06.02.03 15:54

Hallo,

@Udontknow

habe Dein Beispiel gerade ausprobiert. Bei mir funktioniert es.
Verstehe dann aber nicht, warum Sorryman so tut, als ob es nicht funktioniert? Im Prinzip hätte ich mir mein Posting sparen können.


Udontknow - Do 06.02.03 16:09

Hallo, Smiegel!

Hmm, ich glaube, sein Posting "Nein, das meine ich nicht" bezog sich gar nicht auf meine Funktion, sondern auf den Beitrag von Tino, die Beiträge kamen recht knapp hintereinander, und Sorryman hat dann den Beitrag übersehen...

BTW: Merkwürdiger Name, wie bist du drauf gekommen? Erinnert an HdR...

Cu,
Udontknow


smiegel - Do 06.02.03 16:26

Hallo Udontknow,

im Prinzip wird es jetzt Off-Topic ;-)

Zitat:

Erinnert an HdR...


Stimmt (Nickname habe ich seit über 20 Jahren).


Sorryman - Do 06.02.03 23:33
Titel: Sorry!!!
Sorry Jungs!!!

Hab den Eintrag echt übersehen, tut mir leid! Ja, ich glaub das funktioniert! Wär ich später wohl so oder auch drauf gekommen :-)
Wollte nur wissen, ob es eine funktion gibt, die das für einen selber erledigt, aber anscheinend nicht :-)

Naja, trotzdem danke! :-)