String.Format
s'attend à un index dans les accolades. Vous voulez passer le nom à l'intérieur, afin de pouvoir le remplacer par la valeur réelle du nom. Je suggère d'utiliser String.Replace
:
public static string GetHelloGreeting(string template, string name)
{
return template.Replace("{name}", name);
}
Vous pourriez fournir une méthode qui soit plus réutilisable. Par exemple :
public static string ReplaceAll(string template, params (string key, string value)[] replacements)
{
foreach (var kv in replacements)
{
template = template.Replace("{"+ kv.key + "}", kv.value);
}
return template;
}
Votre exemple :
string res = ReplaceAll("Hello, {name}!", ("name", "Bob"));
mais également possible avec plusieurs paramètres :
string res = ReplaceAll("Hello, {name}! Now it's {time}", ("name", "Bob"), ("time", DateTime.Now.ToString("HH:mm")));