2009-04-20 17 views
6

Parece que String.Format no formateará una cadena como entrada. ¿Estoy haciendo algo mal, o es solo un comportamiento nativo?String.Format no formatea una cadena

Entrada: 0,37

Esto no funciona.

string x = String.Format("{0:P}", myString) 

Salida: 0,37

Esto hace.

string x = String.Format("{0:P}", Convert.ToDecimal(myString)) 

de salida: 37.00%

Respuesta

9

Creo que este es el comportamiento esperado para el 'formato compuesta'.

Su primer ejemplo intenta aplicar reglas de formato numérico a una cadena. Su segundo ejemplo intenta aplicar reglas de formato numérico a un número que puede tener posiciones decimales.

Consulte this article on MSDN para obtener más información.

2

La opción de formato que está intentando aplicar solo funciona para números. No existe un concepto de cadenas inteligentes en .NET en el que el CLR inspeccione la cadena para un tipo.

2

¿Estoy haciendo algo mal, o es solo comportamiento nativo?

Ese es el comportamiento nativo. Básicamente no es el trabajo de Format interpretar la entrada de cadena. Format supone que el usuario proporciona los datos correctos; en su caso, datos numéricos. Una cadena no es numérica, incluso si representa un número (¡esta es la distinción más importante en CS entre un valor/semántica y su representación/sintaxis!).

Cuestiones relacionadas