Text mit Platzhaltern versehen und diese auslesen

04/09/2009 - 08:10 von Thomas Meutzner | Report spam
Hallo,

Ich habe einen beliebigen Text mit Platzhaltern. Zum Beispiel:
Am <Platzhalter1;1;Datum;;;0> begann die Arbeit am Projekt
<Platzhalter2;2;Text;;;0> mit <Platzhalter3;3;Zahl;1/2/3;;0>
Entwicklern.

Die Platzhalter haben dabei folgenden internen Aufbau:
< Beschreibung ; Index ; Typ des Platzhalters ; Auswahl ; Wert ; Index
der Auswahl >
Als Wert des Platzhalters kann man nicht nur eine Eingabe von Hand
durchführen, sondern man kann auch einen Wert aus einer Liste
auswàhlen. Deshalb gibt es den Eintrag "Auswahl" im Platzhalter.
Der Typ des Platzhalters ist notwendig, weil damit gesteuert wird
welche Formulare eingeblendet werden sollen.

Der gesamte Text soll dabei in einer Textbox angezeigt werden, wobei
nur die Beschreibung oder der Wert des Platzhalters angezeigt wird:
Am <Platzhalter1> begann die Arbeit am Projekt <Platzhalter2> mit
<Platzhalter3> Entwicklern.
Wenn man den Platzhalter 3 bearbeitet hat, entsteht folgender Text:
Am <Platzhalter1> begann die Arbeit am Projekt <Platzhalter2> mit <2>
Entwicklern.

Ich kann auch nur eine Textbox dazu einsetzen, weil die Anwendung auch
auf mobilen Geràten laufen soll und es dort keine anderen
Stuerelemente gibt.

Die Platzhalter sollen am Bilschirm blau unterlegt werden und nur
diese sollen auch bearbeitet werden können.
Dazu habe ich mir eine Routine geschaffen, die den Text in zwei
Variablen hàlt. Eine beinhaltet den Text wie er am Bildschirm
angezeigt und
bearbeitet werden soll und die andere enthàlt den Text mit der
internen Platzhalterstruktur.

Mein Problem aber ist folgendes:
Wie kann ich die Platzhalter so auslesen, um jederzeit den zu
bearbeitenden Platzhalter zu erhalten.
Jetzt suche ich nach den Zeichen "<" und ">" und prüfe dann ob sich
darin der Name des Platzhalters oder der Wert befindet. Dazu verwende
ich auch die Funktion String.IndexOf.
Das ganze hat aber einen Hacken: Wenn der Wert wie z.B. "2" sowohl in
der Bezeichnung des Platzhalters als auch im Wert des Platzhalters
vorkommt, verheddert sich meine Routine und steigt aus.

Der Einfache Weg wàre eigentlich, man sucht den Platzhalter und
ersetzt diesen durch den gewünschten Wert. Nur leider brauche ich eben
die Angaben, wie welchen Index hat der Platzhalter, wie ist die
Bezeichnung des Platzhalters etc.
Damit soll die Möglichkeit geschaffen werden, dass der Benutzer
jederzeit den Platzhalter àndern kann und entsprechende Formulare
angezeigt bekommt.

Hat von Euch schon mal jemand mit àhnlichen Platzhaltern in Texten
gearbeitet und kann mir Tipps geben, wie man es besser machen könnte?
Ich hatte auch schon an so etwas wie HTML-code gedacht. Dort ist es
auch so, das Tags intern vorhanden sind, aber der Benutzer diese nicht
angezeigt bekommt.
Vielen Dank schon mal für Eure Ideen.
MfG
Thomas
 

Lesen sie die antworten

#1 Ulf [Kado] Kadner
04/09/2009 - 10:36 | Warnen spam
Hallo Thomas Meutzner! Du schriebst folgendes:

Ich habe einen beliebigen Text mit Platzhaltern. Zum Beispiel:
Am <Platzhalter1;1;Datum;;;0> begann die Arbeit am Projekt
<Platzhalter2;2;Text;;;0> mit <Platzhalter3;3;Zahl;1/2/3;;0>
Entwicklern.

Hat von Euch schon mal jemand mit àhnlichen Platzhaltern in Texten
gearbeitet und kann mir Tipps geben, wie man es besser machen könnte?
Ich hatte auch schon an so etwas wie HTML-code gedacht. Dort ist es
auch so, das Tags intern vorhanden sind, aber der Benutzer diese nicht
angezeigt bekommt.



Das ist halt ein stinknormales Verhalten einer Template-Engine. Sowas
làst sich relativ einfach mit einem Parser umsetzen der mit regulàren
Ausdrücken arbeitet.

Falls Dir regulàre Ausdrücke eher fremd sind wirds alledings
komplizierter! ;-)

Alles Nötige findest Du im Namensraum System.Text.RegularExpressions

MfG, Ulf

Ähnliche fragen