2010-11-19 13 views
24

Soy nuevo en la programación de C#. Por favor alguien puede explicar el siguiente código:Cadenas de formato en el método Console.WriteLine

Console.WriteLine("{0}{1,10}", "Face", "Frequency"); //Headings 
Console.WriteLine("{0,4}{1,10}",someval,anotherval); 

entiendo que esto imprime dos columnas de valores con los títulos dados, y {0} se refiere al primer argumento dado. Pero, ¿cuál es el significado de las cadenas de formato del formulario {x,y}?

Respuesta

53

Agrega relleno a la izquierda. Muy útil para recordar los diferentes patrones de cadenas de formato es el siguiente hoja de trucos:

.NET String.Format Cheat Sheet

Los valores positivos se suman margen a la derecha, relleno complemento negativo a la derecha

 
Sample         Generates 
String.Format("[{0, 10}]", "Foo");  [∙∙∙∙∙∙∙Foo] 
String.Format("[{0, 5}]", "Foo");  [∙∙Foo] 
String.Format("[{0, -5}]", "Foo");  [Foo∙∙] 
String.Format("[{0, -10}]", "Foo"); [Foo∙∙∙∙∙∙∙] 
+0

Gracias por la respuesta 0xA3. Si lo entiendo correctamente, ¿eso significa que {1,10} imprimirá el segundo argumento y 10 espacios inmediatamente después? – Joe

+0

@Joe: No, relleno significa que la cadena se llena con espacios en blanco hasta la longitud especificada, vea el ejemplo en mi respuesta. –

+2

¡Por lo que puedo ver, esta hoja de trucos está completamente equivocada! Se usa el índice incorrecto, y la alineación positiva/negativa es lo contrario de lo que realmente sucede. Entonces, para producir '[∙∙∙∙∙∙∙ Foo]', harías 'String.Format (" [{0, 10}] "," Foo ");' –

3

Consulte this para obtener una referencia de formato de cadena muy buena.

3

Este es un valor de relleno ... si el argumento no es la duración que se especifica, se pone en espacios.

P. ej si tuviera {0,10} y el argumento para {0} fuera "Blah", el valor real impreso sería "Blah<SPACE><SPACE><SPACE><SPACE><SPACE><SPACE>" ... Blah, con 6 espacios adicionales para componer una cadena de 10 longitud

ps - no está seguro de cómo poner en espacios reales ... necesidad de mirar hacia arriba SO faq sin duda

8

Cuando vea {x,y}, x representa el índice de la discusión y y la alineación, tal como se especifica here. La sintaxis completa es la siguiente:

{index[,alignment][:formatString]} 
Cuestiones relacionadas