2010-11-19 27 views
24

Je suis novice en programmation C#. Quelqu'un peut-il expliquer s'il vous plaît le code suivant:Chaînes de format dans la méthode Console.WriteLine

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

Je comprends que cela imprime deux colonnes de valeurs avec les titres donnés, et {0} fait référence au premier argument donné. Mais quelle est la signification des chaînes de format du formulaire {x,y}?

Répondre

53

Il ajoute un rembourrage à gauche. Très utile pour rappeler les différents modèles de mise en forme de chaîne est la antisèche suivante:

.NET String.Format Cheat Sheet

valeurs positives ajouter un rembourrage à gauche, rembourrage ajouter négative à droite

 
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

Merci pour la réponse 0xA3. Si je comprends bien, cela signifie-t-il que {1,10} afficherait le deuxième argument et 10 espaces immédiatement après? – Joe

+0

@Joe: Non, le remplissage signifie que la chaîne est remplie avec des blancs jusqu'à la longueur spécifiée, voir l'exemple dans ma réponse. –

+2

Pour autant que je puisse voir, cette feuille de triche est complètement faux! Le mauvais index est utilisé, et l'alignement positif/négatif est le contraire de ce qui se passe réellement. Donc, pour produire '[∙∙∙∙∙∙∙ Foo]', vous devriez faire 'String.Format (" [{0, 10}] "," Foo ");' –

3

Veuillez vérifier this pour une référence de formatage de très bonne chaîne.

3

C'est une valeur de remplissage ... si l'argument n'est pas la longueur qui est spécifié, il met espaces.

Par ex si vous aviez {0,10} et l'argument pour {0} était "Blah", la valeur réelle imprimée serait "Blah<SPACE><SPACE><SPACE><SPACE><SPACE><SPACE>" ... Blah, avec 6 espaces supplémentaires pour constituer une chaîne de 10 longueur

ps - pas sûr comment mettre des espaces réels dans ... besoin de regarder SO faq sans doute

8

Quand vous voyez {x,y}, x représente l'index et y l'alignement de l'argument, tel que spécifié here. La syntaxe complète est la suivante:

{index[,alignment][:formatString]}