![]() |
Anzahl eines Zeichens im String ermitteln
Wie kann man die Anzahl eines Zeichens in einem vorliegenden String ermitteln ? Die Pos-Funktion sucht ja nur das erste Zeichen.
Gibt es dafür eine spezielle Funktion, oder muss ich etwa den String in eine temporäre Variable kopieren und nach jedem gefundenen Pos-Ergebnis das Zeichen in dieser Temp-Variable löschen (in einer Schleife) ? |
Re: Anzahl eines Zeichens im String ermitteln
Delphi-Quellcode:
Length(myString)
|
Re: Anzahl eines Zeichens im String ermitteln
Delphi-Quellcode:
es wird einfach zeichen fuer zeichen verglichen. in j findest du dann die anzahl der zeichen
var
i: LongInt; j: LongInt = 0; begin for i := 1 to length(str) do if str[i] = zeichen then Inc(j); //edit die funktion dazu:
Delphi-Quellcode:
function miep(const s: String; c: Char): LongInt;
var i: LongInt; begin result := 0; for i := 1 to length(s) do if s[i] = c then Inc(result); end; |
Re: Anzahl eines Zeichens im String ermitteln
Man könnte es auch mit PosEx() machen
|
Re: Anzahl eines Zeichens im String ermitteln
Zitat:
|
Re: Anzahl eines Zeichens im String ermitteln
Zitat:
|
Re: Anzahl eines Zeichens im String ermitteln
Ich hab zwar grad kein Delphi zur verfügung, aber ich denke dass PosEx nichts anderes macht als den String durchzugehen. Dann kann man sich die mehrfachen Aufrufe auch gleich sparen und per Hand zählen.
|
Re: Anzahl eines Zeichens im String ermitteln
Dann wäre es schlimmstenfalls genauso ineffektiv.
|
Re: Anzahl eines Zeichens im String ermitteln
Also ich habe jetzt eine eigene Funktion geschrieben, die in einer For-To-Do-Schleife (danke @1234588) den String durchsucht.
Ich habe gerade aber auch ein Beispiel mit PosEx ![]() |
Re: Anzahl eines Zeichens im String ermitteln
Geht sogar als Einzeiler:
Delphi-Quellcode:
z:=Length(str)-Length(StringReplace(str, c, '', [rfReplaceAll]))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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