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%

War es hilfreich?

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!).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top