AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anzahl eines Zeichens im String ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl eines Zeichens im String ermitteln

Ein Thema von DevidEspenschied · begonnen am 27. Jun 2008 · letzter Beitrag vom 17. Jul 2018
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#1

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 10:23
Also ich finde die ganzen Varianten höchst interessant und man erfährt dabei ein wenig, wo typische bottlenecks sitzen.

String.CountChar kannte ich nicht, also insofern wieder was nützliches dazugelernt (hatte dafür nur eine eigene Funktion).

Cool wäre auch, eine Funktion zu haben, welche nicht nur die Anzahl der Vorkommen des Chars ermittelt, sondern auch noch deren Position z.B. in einem Array zurück gibt. Das könnte auch noch an verschiedenen Stellen hilfreich sein.

Eine fertige Funktion scheint es da aber nicht zu geben, oder (String.split habe ich gesehen, gibt aber ein Array der Teilstrings zurück, ich wäre aber erst mal nur an den Positionen des gesuchten Chars interessiert)?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.675 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 10:40
Eine fertige Funktion scheint es da aber nicht zu geben, oder (String.split habe ich gesehen, gibt aber ein Array der Teilstrings zurück, ich wäre aber erst mal nur an den Positionen des gesuchten Chars interessiert)?
Nein, sowas gibt es bislang noch nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 10:51
Eine fertige Funktion scheint es da aber nicht zu geben, oder (String.split habe ich gesehen, gibt aber ein Array der Teilstrings zurück, ich wäre aber erst mal nur an den Positionen des gesuchten Chars interessiert)?
Nein, sowas gibt es bislang noch nicht.
Schade, dann muss ich mir mal überlegen, wo man das bei einer der hier gezeigten Lösungen am besten noch einbauen könnte. Müsste ja dann wohl eine Art dynamisches Array sein, das die einzelnen Positionen aufnimmt.
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 10:57
@Uwe,

mir scheint der Compiler kennt die Feder das Autors und meint es gut mit ihm

Nungut, W64 kann ich dir und CodeZwerg (warum auch immer) auf deinen Pay-Compiler wohl nicht abgraben!
Beim W32 scheint er nun doch auf deiner Seite fremd zugehen..

@Harry

deine Anregung wäre eine weiter Challange -> neues Thema, jodoch sehr leicht. Dieses Thema hier könnte mann auch noch um eine caseinsensitive Suche aufbohren oder so..


@CodeZwerg, wie schauts mit den Benchmarks auf deiner Seite aus??
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#5

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 11:22

@Harry

deine Anregung wäre eine weiter Challange -> neues Thema, jodoch sehr leicht. Dieses Thema hier könnte mann auch noch um eine caseinsensitive Suche aufbohren oder so..
Hast recht, ist schon erledigt (TIntDyArray in der Funktion von Uwe eingebaut, da ich dort immer nur eine Stelle habe, wo der Zähler hochgeht). Aber danke auch an Dich für den Hinweis mit der blockweisen Bearbeitung, da kommen mir Ideen für andere Funktionen (z.B. in der Bitmap-Bearbeitung)...

Geändert von Harry Stahl (14. Jul 2018 um 11:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.675 Beiträge
 
Delphi 12 Athens
 
#6

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 11:45
TIntDyArray in der Funktion von Uwe eingebaut, da ich dort immer nur eine Stelle habe, wo der Zähler hochgeht
Eventuell ist es effizienter, beim ersten Mal die Anzahl der Vorkommen zu ermitteln, dann das Array auf die passende Größe setzen und im zweiten Durchlauf dann die Positionen einzutragen. Mehrfache SetLength-Aufrufe wären da eher suboptimal.

Alternativ eine TList<Integer> füllen und über ToArray in ein Array umwandeln.

Man kann natürlich auch erstmal das Array mit Length(S) anlegen, wenn Speicher keine Rolle spielt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Anzahl eines Zeichens im String ermitteln

  Alt 14. Jul 2018, 11:58
Da ich eure Sourcen nicht kompilieren kann werde ich meinen Eigenen Benchmark erweitern und bald hier vorstellen.
Geplant ist eine GUI mit einstellbarer Datenmenge, Anzahl von Wiederholungen, Einzeltests<>Multitests.
Eine Idee um Schwankungen auszugleichen habe ich auch schon, was haltet ihr davon?
Idee: LastNano und CurrNano hält Zeitwerte des letzten und aktuellen Vorgangs, bei neuem Durchgang wird die Differenz von Last und Curr extrahiert, geteilt und der Restwert zugerechnet/abgezogen (je nach dem). Wäre das legitim um einen guten Durchschnittswert zu erhalten?
Eine "AddPosArray" funktionalität für Harry werde ich bei meiner Lieblingsfunktion von Uwe integrieren.
Von Egon hab ich nur zwei Varianten, ich lade mir den letzten Eurer Sourcen und nehme alles mit rein.

Als Ergebnis wird die Liste als Rangfolge dann angezeigt.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 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