![]() |
string Wörter zählen
Hallo,
ich habe eine String Zerlegungsroutine, die mir einen String in einzelne Wörter zerlegt:
Delphi-Quellcode:
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?
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; |
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). ;) |
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:
mfg BurnAnzahl := 0; for i := 1 to Length(s) do begin if s[i] = ';' then Inc(Anzahl) end; |
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:
|
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 19:47 Uhr. |
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