![]() |
String durchsuchen und Wortvorkommen zählen
Hallo Leute,
ich habe ein ganz kniffliges Problem *g* Und zwar sieht das wie folgt aus: In meinem String stehen sehr viele Worte und ich möchte zählen, wie oft ein und das selbe Wort vorkommt, bis das primär gesuchte Wort auftaucht. Das soll zum Beispiel so aussehen: String: "Delphi Delphi Delphi Delphi Forum Delphi Delphi" Rückgabewert: "Delphi": 4 "Forum": Existiert Die primäre Durchsuchung (die auch funktioniert ;)), sieht so aus:
Delphi-Quellcode:
Gegen radikale Umwürfe hab ich nix, der Code stammt auch nicht von mir; ich komme damit kaum zurecht und versuche, mich mit meinen mangelhaften (aber wachsenden *g*) Kenntnissen durchzumogeln ;-)
sl := TStringList.Create;
try sl.Delimiter := #9; sl.Sorted:=True; for x:=0 to ListboxGesuchteWorte.Count-1 do begin sl.DelimitedText := ListboxGesuchteWorte.Items[x]; sl.Duplicates:=dupIgnore; for ndx := 0 to pred (sl.Count) do begin okay := Pos (sl.Strings[ndx],MeinGrosserString) > 0; // Wort ist vorhanden if not (okay) then ListboxNichtVorhanden.Items.Add(sl.Strings[ndx]) else ListboxIstVorhanden.Items.Add(sl.Strings[ndx]); end; end; finally FreeAndNil (sl); end; Hm, also ich hoffe ich hab 's richtig und vollständig erklärt. Danke für eure Hilfe! |
Re: String durchsuchen und Wortvorkommen zählen
Moin Aike
welche Delphi Version verwendest Du? |
Re: String durchsuchen und Wortvorkommen zählen
Delphi 7
|
Re: String durchsuchen und Wortvorkommen zählen
Moin Aike,
dann sollte sich das mit PosEx lösen lassen. Als erstes würde ich mir die Startposition des primären Wortes suchen (pos), und dann solange mit PosEx das sekundäre suchen, solange dessen Startposition kleiner als die des primären ist. Ein Beispiel:
Delphi-Quellcode:
var
sSearch : string; iPrimaer : integer; iCount : integer; iSekundaer : integer; begin sSearch := 'Delphi Delphi Delphi Delphi Praxis Delphi Delphi'; iPrimaer := pos('Praxis',sSearch); iCount := 0; iSekundaer := pos('Delphi',sSearch); while iSekundaer < iPrimaer do begin inc(iCount); iSekundaer := PosEx('Delphi',sSearch,iSekundaer+1); end; ShowMessage('Delphi: '+IntToStr(iCount)); end; |
Re: String durchsuchen und Wortvorkommen zählen
Hallo,
wenn du die Häufigkeit eines Wortes in einem String wissen willst, dann haben die Schweizer einen netten Code dafür: ![]() Wobei es nicht so heissen muss:
Code:
sondern so:
subtext, ',
Code:
subtext, '',
|
Re: String durchsuchen und Wortvorkommen zählen
Das Problem an dem Code ist, dass er nicht abbricht, sobald mein gesuchtes Wort auftaucht.
Wie gesagt:
Delphi-Quellcode:
soll nicht
string: 'Delphi Delphi Praxis Delphi'
Delphi: 3x sondern 2x anzeigen, weil 'Delphi' zwei Mal vor Praxis erscheint. Und PosEx ist komischerweise ein undefinierter Bezeichner, obwohl ich eine Hilfe dazu aufrufen kann :| [edit]Yeah, man muss in die UsesList noch den Eintrag "StrUtils" hinzufügen, dann geht 's :???: [/edit] Ok, anscheinend war es das doch noch nicht. Es funktioniert noch nicht so richtig. Irgendetwas wird falsch durgezählt. [Eine Stunde später] Ich hab jetzt noch
Delphi-Quellcode:
eingefügt und es scheint zu funktionieren *freu*
result:=iCount
|
Re: String durchsuchen und Wortvorkommen zählen
Jetzt habe ich aber noch folgendes Problem; falls das hier im falschen Thread ist müsst ihr 's mir sagen :?
Die gesuchten Worte stehen in der Listbox "ListboxGesuchteWorte". Leider werden bei der Durchsuchung nur ganze Worte verwendet, und wenn ich in der Listbox als einen Eintrag "Delphi Praxis" stehen habe, wird zuerst nach "Delphi" und dann nach "Praxis" gesucht und beides als separater Wert zurückgegeben. Wenn in dem Text "Delphi ist Praxis" steht, sollte eigentlich ein false und kein true zurückgegeben werden :cry: |
Re: String durchsuchen und Wortvorkommen zählen
1. Pushen erst nach 24h
2. Neue Frage, neuer Thread ;) air |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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