Ich baue gerade diese kleine Template-Engine. Es nimmt eine Zeichenfolge, die die Vorlage in Parameter enthält, und ein Wörterbuch von "Tags, Werte" in der Vorlage zu füllen.
In der Engine habe ich keine Ahnung, welche Tags in der Vorlage enthalten sein werden und welche nicht.
Ich bin gerade dabei, das Wörterbuch zu durchlaufen (foreach), meine Zeichenfolge zu analysieren, die ich in einen String Builder eingegeben habe, und die Tags in der Vorlage durch den entsprechenden Wert zu ersetzen.
Gibt es einen effizienteren/bequemeren Weg, dies zu tun? Ich weiß, dass der größte Nachteil hier ist, dass der Stringbuilder jedes Mal vollständig für jedes Tag geparst wird, was ziemlich schlecht ist...
(Ich überprüfe auch, obwohl nicht im Beispiel enthalten, nach dem Prozess, dass meine Vorlage kein Tag mehr enthält. Sie sind alle auf dieselbe Weise formatiert: @@tag@@)
//Dictionary<string, string> tagsValueCorrespondence;
//string template;
StringBuilder outputBuilder = new StringBuilder(template);
foreach (string tag in tagsValueCorrespondence.Keys)
{
outputBuilder.Replace(tag, tagsValueCorrespondence[tag]);
}
template = outputBuilder.ToString();
Antworten:
@Marc:
string template = "Some @@foobar@@ text in a @@bar@@ template";
StringDictionary data = new StringDictionary();
data.Add("foo", "value1");
data.Add("bar", "value2");
data.Add("foo2bar", "value3");
Ausgabe: "Ein Text in einer value2-Vorlage"
anstelle von: "Einige @@foobar@@ Texte in einer value2 Vorlage"