Lassen Sie uns über diese API nachdenken, falls sie existiert. Das Ziel besteht darin, eine Formatzeichenfolge vorab zu validieren, um sicherzustellen, dass String.Format
nicht ausgelöst wird.
Beachten Sie, dass jede Zeichenfolge, die nicht enthält einen gültigen Format-Steckplatz ist eine gültige Formatzeichenfolge - wenn Sie nicht versuchen, einen Ersatz einzufügen.
-> So würden wir in der Anzahl oder args passieren müssen wir
Hinweis, dass es Tonnen von verschiedenen Spezialformatierungsmuster, die jeweils mit einer bestimmten Bedeutung für bestimmte Arten zu ersetzen erwarten: http://msdn.microsoft.com/en-us/library/system.string.format.aspx
Obwohl es scheint, dass String.Format
nicht ausgelöst wird, wenn Sie eine Formatzeichenfolge übergeben, die nicht mit Ihrem Argumenttyp übereinstimmt, wird der Formatierer in solchen Fällen bedeutungslos. z.B. String.Format("{0:0000}", "foo")
-> So eine API wäre wirklich nur nützlich, wenn Sie auch die Arten der Argumente übergeben.
Wenn wir bereits unsere Formatzeichenfolge und ein Array von Typen (zumindest) übergeben müssen, dann sind wir grundsätzlich bei der Signatur String.Format
, also warum nicht einfach das verwenden und die Ausnahme behandeln? Es wäre schön, wenn etwas wie String.TryFormat
existiert, aber meines Wissens nicht.
Auch über eine API vorab zu validieren, dann ist die erneute Validierung in String.Format
selbst nicht optimal.
Ich denke, die sauberste Lösung könnte einen Wrapper zu definieren sein:
public static bool TryFormat(string format, out string result, params Object[] args)
{
try
{
result = String.Format(format, args);
return true;
}
catch(FormatException)
{
return false;
}
}
Welche Sprache sind Sie in der Arbeit? C#? –
Sie sollten diese Frage mit der Programmiersprache versehen, nach der Sie eine Antwort suchen. – chucksmash
ja C# string.format – codeSetter