Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string Wörter zählen (https://www.delphipraxis.net/151836-string-woerter-zaehlen.html)

Cogito 3. Jun 2010 11:37


string Wörter zählen
 
Hallo,

ich habe eine String Zerlegungsroutine, die mir einen String in einzelne Wörter zerlegt:

Delphi-Quellcode:
function Parse(Char, S: string; Count: Integer): string;
var
  I: Integer;
  T: string;
begin
  if S[Length(S)] <> Char then
    S := S + Char;
  for I := 1 to Count do
  begin
    T := Copy(S, 0, Pos(Char, S) - 1);
    S := Copy(S, Pos(Char, S) + 1, Length(S));
  end;
  Result := T;
end;
Wenn ich nun einen string s := ';wert1;wert2;wert3' habe kann ich mir mittels Angabe Parse(';', s, 2) den zweiten Wert zurückgeben lassen. So weit so gut. Wie bekomme ich aber nun raus, wieviele Wörter mein String s überhaupt enthält, hat da jemand eine Routine oder Funktion für?

freak4fun 3. Jun 2010 11:45

Re: string Wörter zählen
 
Anzahl der ; vielleicht?

Wenn ich sowas habe, dann splitte ich die Liste mit TStringlist ( Delimitter := ;, Strictdelimitter = True und dann DelimittertText zuweisen). ;)

burn 3. Jun 2010 11:47

Re: string Wörter zählen
 
Hallo,

soweit ich das sehe steht vor jedem Wort ein ";".
Also gehst du durch deinen String und zählst die ";" und
hast damit die Anzahl der Wörter.

Delphi-Quellcode:

Anzahl := 0;
for i := 1 to Length(s) do
begin
  if s[i] = ';' then
    Inc(Anzahl)
end;
mfg Burn

himitsu 3. Jun 2010 11:47

Re: string Wörter zählen
 
Indem du keine fest For-Schleife verwendets, sondern z.B. über eine While-Schleife solange den String abarbeitest, bis er leer ist und dabei natürlich mitzählst.

PS: Mithilfe einer TStringList kann man auch über einen Seperator (in deinem Fall das ; ) strings zerlegen lassen
und ich glaub in der CodeLib gibt es auch schon einige fertige Klassen und Funktionen für solche Aufgaben.

Zitat:

Zitat von Cogito
kann ich mir mittels Angabe Parse(';', s, 2) den zweiten Wert zurückgeben lassen.

Dann ist aber der Parameter "Count" irreführend beschrieben "Index", "Position" oder so ähnlich wäre da besser, da es ja nicht die "Anzahl", sondern eine "Position" angibt.

rollstuhlfahrer 3. Jun 2010 12:11

Re: string Wörter zählen
 
Außerdem funktioniert deine Zerlegeroutine nicht. Sie sorgt nur dafür, dass alle ; aus dem String entfernt werden. Aus "wort1;wort2;wort3" wird somit "wort1wort2wort3".

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 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