![]() |
Worte im Text ersetzen
Hallo erstmal :)
Ich habe folgendes Problem: Ich habe einen Text im Edit Feld und eine Listbox mit weiteren Wörten. Meine Aufgabe ist nun, jedes der Wörter im Edit Feld mit den einträgen in der Listbox zu vergleichen, und wenn das Wort in der Listbox vorhanden ist, soll dieses Ersetzt werden. Eigentlich auch garnciht schwer. Das ganze sieht folgendermaßen aus Edit feld : 'Hallo ich bin Dieter' in der Listbox steht dann sowas wie 'Hallo,Guten Tag,Willkommen' an Position 0 und 'Dieter,Harald,Peter' an Position 2 Nun möchte ich die Wörter im Edit feld mit den ausdrücken aus der Listbox ersetzen. Bsp: 'Hallo,Guten Tag,Willkommen ich bin Dieter,Harald,Peter' Das ersetzen an sich ist nicht das Problem, das habe ich bereits mit Pos() gelöst, jedoch will ich nicht nur 1 Wort ersetzen, sondern jedes im Text. Könnte mir jemand helfen wie ich die worte nacheinander durchgehe? Wenn ich nur 'Dieter' eingebe, ersetzt er Problemlos den eintrag mit 'Dieter,Harald,Peter'. Ich hoffe ich konnte mein Problem ausreichend schildern und ihr versteht was ich damit meine :) Danke für eure hilfe |
AW: Worte im Text ersetzen
Stichworte:
- Pos (kennst du ja schon) - Copy - Delete - StringReplace Funktion -> NeuerString := StringReplace(AlterString, Muster, Ersetzung, ...) |
AW: Worte im Text ersetzen
Also Seki, ich hab zwar nicht in allen Einzelheiten dein Problem verstanden, aber hier ein Beispiel wie man einen Text in Wörter zerlegen kann.
Delphi-Quellcode:
Der Satz landet in einer TStringList (oder hier für das Beispiel eine ListBox).
procedure StringZerlegen(Str: String; List: TStrings);
const abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ßäÄöÖüÜ'; var OldDelimiter: Char; i, k: Integer; s: String; begin //Zerlegt Satz in Wörter OldDelimiter := List.Delimiter; List.Delimiter := ' '; //Leerzeichen List.DelimitedText := Str; List.Delimiter := OldDelimiter; //Entfernt alles was nicht Buchstabe oder Zehl ist for i := 0 to List.Count - 1 do begin s := List[i]; for k := Length(s) downto 1 do if Pos(s[k], abc) = 0 then Delete(s, k, 1); List[i] := s; end; end; procedure TForm1.Button1Click(Sender: TObject); var Str: String; begin Str := 'Hallo, ich bin Dieter.'; //Satz mit Satzzeichen StringZerlegen(Str, ListBox1.Items); end; Vielleicht hilft dir das bereits. |
AW: Worte im Text ersetzen
Versteh ich das richtig, dass das zu ersetzende Wort in der Listbox-Zeile an erster Stelle, gefolgt von einem Komma, steht? Dann müsstest Du dieses zuerst temporär herauskopieren und dann StringReplace anwenden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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