Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Automatisierte Satzerstellung aus Objekteigenschaften mittels RegEx (https://www.delphipraxis.net/193205-automatisierte-satzerstellung-aus-objekteigenschaften-mittels-regex.html)

hansklok 5. Jul 2017 11:50

Automatisierte Satzerstellung aus Objekteigenschaften mittels RegEx
 
Hallo alle miteinander,

ich bin auf die folgende Seite gestossen: http://www.gedsite.com/en/sentences.htm. Es handelt sich um ein Programm, wo man Lebensereignisse zu einem Personendatensatz hinzufügen kann und mittels Variablen eine Satzstruktur erstellen kann, in der dann die Variablen durch die im Ereignis definierten Werte ersetzt werden.

Ein Ereignis setzt sich beispielsweise durch einen Ereignistyp (Geburt, Taufe, Tod etc.), ein Datum, einen Ort und einen Ereignissatz zusammen. Dabei sind die Angabe des Datums [D] (für Date) und des Ortes [L] (für Location) optional. Der Ereignissatz kann nun wie folgt aussehen:

[S] died< on [D]>< at [L]>. ([S] ist der Name der Person)

Alles das, was zwischen den spitzen Klammern auftaucht, wird nur ausgegeben, wenn das Ereignis die entsprechende Eigenschaft besitzt, sonst nicht. Würde jetzt aber anstelle des Beispiels oben, das hier stehen

[S] died on [D] at [L]. ,

würden die Teile garantiert ausgegeben und falls die Eigenschaften nicht gesetzt werden folgendes ausgegeben: Max Mustermann died on at .

Meine Frage also ist, wie man für dieses Prozedere eine günstige, schnelle Suchen und Ersetzen Methode kreiert. Reguläre Ausdrücke bieten sich an und sind bei diesem einfachen Beispiel für mich auch kein Problem. Schwierig wird es aber ab dem Bereich, der auf der verlinkten Seite unter Alternatives zu finden ist. Wie Liese sich so etwas umsetzen? Ideen?

Was es für mich noch schwieriger macht, wenn man sich den Abschnitt Variables for Formatting anseht, erkennt man ja, dass primitive Formatierungen der Textausgaben möglich sind. An sich muss man also nach zwei verschiednen Syntaxen suchen und diese entsprechend behandeln. Wie könnte man das Beispiel

[S] died [ITAL]< on [BOLD][D][/BOLD] >< at [L]>[/ITAL] .

in einem RichEdit formatiert ausgeben. Schwierig scheint mir hier, dass die Formatierungsbefehle beliebig verschachtelt auftreten können. Vielleicht hat ja jemand einen Ansatz und man kann sich gemeinsam etwas Zusammenspinnen,

Dankeschön!

jobo 5. Jul 2017 13:37

AW: Automatisierte Satzerstellung aus Objekteigenschaften mittels RegEx
 
Vielleicht ein Fall für Regex back references.
öffnende / schließende HTML Tags kann man damit auch erwischen.
Leere Variablen kann man vlt. entweder stumpf ersetzen und mit Leerwert vergleichen, dann ggF. rauswerfen oder die entsprechenden Abschnitte gleich restlos entfernen, wenn Quellwerte leer sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz