Es gibt keine Standardmethode in .NET "mit Wörterbuch Werte ersetzen". Während es eine Nummer Template-Engines gibt, ist es nicht sehr schwer, eine kleine Lösung für eine solche Operation zu schreiben. Hier ist ein Beispiel, das in LINQPad läuft und Regular Expression with a Match Evaluator verwendet.
Als Ergebnis ist eine URL, es die Anrufer Verantwortung ist die gelieferten Werte um sicherzustellen, dass alle correctly encoded sind. Ich empfehle die Verwendung von Uri.EscapeDataString
als geeignet .. aber stellen Sie sicher, nicht zu codieren, wenn es an anderer Stelle verarbeitet wird.
Darüber hinaus sollten die Regeln, was zu tun ist, wenn kein Ersatz gefunden wird, auf den Bedarf zugeschnitten werden. Wenn nicht gefundene Ersetzungen zusammen mit dem Abfragezeichenfolgenschlüssel vollständig eliminiert werden sollen, kann der folgende Ausdruck den regulären Ausdruck auf @"\w+=({\w+})"
erweitern, um den Parameterschlüssel auch in dieser spezifischen Vorlagensituation zu erfassen.
string ReplaceUsingDictionary (string src, IDictionary<string, object> replacements) {
return Regex.Replace(src, @"{(\w+)}", (m) => {
object replacement;
var key = m.Groups[1].Value;
if (replacements.TryGetValue(key, out replacement)) {
return Convert.ToString(replacement);
} else {
return m.Groups[0].Value;
}
});
}
void Main()
{
var replacements = new Dictionary<string, object> {
{ "networkid", "WHEEE!!" }
// etc.
};
var src = "http://api.example.com/sale?auth_user=xxxxx&auth_pass=xxxxx&networkid={networkid}&category=b2c&country=IT&pageid={pageid}&programid=133&saleid=1&m={master}&optinfo={optinfo}&publisher={publisher}&msisdn={userId}";
var res = ReplaceUsingDictionary(src, replacements);
// -> "http://api.example.com/sale?..&networkid=WHEEE!!&..&pageid={pageid}&..
res.Dump();
}
Fortgeschrittenere Techniken, wie Reflexion und Transformationen sind möglich - aber diese sollten für den realen Template-Engines gelassen werden.
nachschlagen 'string.Replace' auf msdn. – Blorgbeard
ist diese URL, die Sie irgendwo speichern und senden möchten oder kommt es in Ihrer Anfrage? –
mögliches Duplikat von [Benannte Zeichenfolgenformatierung in C#] (http://stackoverflow.com/questions/159017/named-string-formatting-in-c-sharp) – Oliver