String.Format Hat Format keinen String
-
12-09-2019 - |
Frage
Es scheint, als ob String.Format keinen String als Eingabeformat. Mache ich etwas falsch, oder ist das nur nativer Verhalten?
Input: 0,37
Das funktioniert nicht.
string x = String.Format("{0:P}", myString)
Ausgabe: 0,37
Dieser Fall ist.
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
Ausgabe: 37.00%
Lösung
Ich glaube, das ist das erwartete Verhalten für ‚Verbund Formatierung‘.
Ihr erstes Beispiel versucht, numerische Formatierungsregeln auf eine Zeichenfolge anzuwenden. Ihr zweites Beispiel versucht, numerische Formatierungsregeln zu einer Reihe anzuwenden, die Dezimalstellen haben.
Siehe dieser Artikel auf MSDN mehr Informationen.
Andere Tipps
Die Formatoption Sie versuchen, nur anzuwenden arbeitet für Zahlen. Es gibt kein Konzept von Smart Strings in .NET in dem der CLR die Zeichenfolge für eine Art untersucht.
Bin ich etwas falsch zu machen, oder ist das nur nativer Verhalten?
Das ist nativer Verhalten. Es ist im Grunde nicht die Aufgabe Format
String-Eingang zu interpretieren. Format
geht davon aus, dass der Benutzer die richtigen Daten liefert - in Ihrem Fall, numerisch Daten. Ein String ist nicht numerisch, auch wenn es für eine Zahl (das ist der entscheidende Unterschied in CS zwischen einem Wert / Semantik und seiner Darstellung / Syntax!).