![]() |
Zeichen zählen
Hallo
Ich bin Delphi-Neuling - wie kann ich möglichst einfach in einer Konsolenanwendung die Zeichen eines Strings zählen ? So dass alle vorhandenen Strings ausgegeben werden-z.B : e : 5 g : 2 t : 3 Von mir aus können auch alle anderen die nicht vorhanden sind mit 0 ausgegeben werden. dinu_ch |
Re: Zeichen zählen
Hi!
Willkommen in der DP!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, Anzahl: integer; Wort, Buchstabe: string; begin Wort:='Matthias'; Buchstabe:='t'; Anzahl:=0; for i:=0 to Length(Wort) do if Wort[i] = Buchstabe then inc(Anzahl); Label1.Caption:=IntToStr(Anzahl); end; |
Re: Zeichen zählen
Danke erstmals - da bin ich schon viel weiter.
Und wie kann ich die Anzahl aller Buchstaben die vorkommen auslisten : zum Beispiel bei Hallo : 1 x H 1 x a 2 x l 1 x o |
Re: Zeichen zählen
Diese Version hier zählt alle Buchstaben von a bis z in dem String S.
Man könnte das ganze vielleicht auch mit Sets (Mengentypen) lösen. Das wäre vor allem dann sinnvoll, wenn noch Umlaute und Sonderzeichen mit abgeprüft werden sollen.
Delphi-Quellcode:
Im Array "C" stehen dann die Anzahl der Buchstaben drin. (z.B.: Memo1.Lines.Add(IntToStr(C['a']) gibt die Anzahl der "a"s aus)
procedure TForm1.Button1Click(Sender: TObject);
var S: String; i: Integer; C: Array['a'..'z'] of Integer; X: Char; begin S := LowerCase('Dies hier ist mein Text'); ZeroMemory(@C, SizeOf(C)); // Array mit Nullen füllen for i := 1 to Length(S) do Inc(C[S[i]]); // Ausgabe zum testen... for X := Low(C) to High(C) do if C[X] > 0 then Memo1.Lines.Add(X + ': ' + IntTostr(C[X])); end; Gruß Wormid [Edit: Matzes Einwand war korrekt... Fehler behoben] |
Re: Zeichen zählen
Hi Wormid!
Kannst du mir erklären, wieso man in deinem Fall dem "array C of integer" Buchstaben zuordnen kann. Das verstehe ich ja überhaupt nicht, ich dachte ein Integer besteht immer aus Zahlen. Wäre nett, wenn du mich aufklärst. ;) |
Re: Zeichen zählen
@Wormid:
Es muss aber:
Delphi-Quellcode:
heißen. ;)
for i := 1 to Length(S) do Inc(C[S[i]]);
|
Re: Zeichen zählen
Zitat:
Was Deinen Einwand mit dem Fehler angeht: Du hast recht, ich habe das editiert. :hi: Wormid |
Re: Zeichen zählen
Moin Matze,
Zitat:
Bei Boolean wären die Indizes 0 und 1 zugelassen, bei Wormids Variante gehen sie von 97 bis 122. Derartige Angaben sind möglich, solange die Gesamtgrösse 2 GB nicht übersteigt. array [integer] of integer geht beispielsweise nicht. Man kann es aber natürlich auch mit eigenen Typen machen z.B
Delphi-Quellcode:
type
TTest = (t1,t2,t3); var c : array [TTest] of integer; i : TTest; begin for i := t1 to t3 do |
Re: Zeichen zählen
Achso, danke Chris!
Aber
Delphi-Quellcode:
wäre doch auch gegangen, wieso nimmt man dann integer?
C: Array['a'..'z'] of string;
Benötigt das weniger Speicher? |
Re: Zeichen zählen
Moin Matze,
das ist das Array in dem gespeichert werden soll, wie oft welcher Buchstabe vorkommt (Inc(C[S[i]]);) Wobie diese Variante nur mit Kleinbuchstaben funktionieren dürfte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz