2011-05-12 12 views
1

Comment écrire un fichier dans une position spécifique au lieu de donner de l'espace comme " " .Ici je suis en train d'écrire dans un fichier, la sortie je reçois est commeÉcrire dans un fichier texte à un emplacement spécifique?

TIMESTAMP    'ATRS_ACCT_TIMESTAMP', 
OU_ID    'ATRS_ACCT_OU_ID', 
COMPANY_CODE    'ATRS_ACCT_COMPANY_CODE', 
BU_ID    'ATRS_ACCT_BU_ID', 

mais je besoin d'une sortie comme celui-ci

TIMESTAMP   'ATRS_ACCT_TIMESTAMP', 
OU_ID    'ATRS_ACCT_OU_ID', 
COMPANY_CODE  'ATRS_ACCT_COMPANY_CODE', 
BU_ID    'ATRS_ACCT_BU_ID', 

Voici mon code

string[] ss = new string[tblSchema.Rows.Count]; 
for (int i = 0; i < tblSchema.Rows.Count; i++) 
{ 
    ss[i] = (tblSchema.Rows[i]["ColumnName"].ToString()); 
    dest.WriteLine(ss[i].ToUpper() + "    " + 
        "'" + textBox2.Text + ss[i].ToUpper() + "'" + ","); 
} 

Toute suggestion?

Répondre

6

Utilisez String.Format() et spécifiez la longueur du champ pour vos champs. Quelque chose comme ceci:

var line = String.Format("{0,-20} '{1}{0}',", ss[i].ToUpper(), textBox2.Text); 
// "{0,-20}" - Print the first item using a minimum of 20 characters left aligned 
dest.WriteLine(line); 
0

utilisez "\ t" au lieu de "" - il insère des tabulations à la place des espaces.

EDIT: mon mauvais, n'a pas remarqué que vous étiez itérer sur les noms de la table. Il est hacky, mais vous pouvez utiliser un nombre variable de \ t basé sur le plus grand nom de table et le nom de la table en cours ...

+0

Cela ne va fonctionner que si tous de la table les noms se terminent dans la même limite de tabulation. – forsvarir

+0

Je n'ai pas remarqué qu'il utilisait pour la boucle sur le nom de la colonne, sinon je suggérerais simplement d'utiliser autant de \ t que nécessaire ... C'est moche, mais vous pouvez le pirater en utilisant \ t basé sur les plus grands noms de tables au nom de la table actuelle. – Gal

5

Peut-être que cela aide à la compréhension:

string txt = "Hello World"; 
    string txt2 = "Test"; 
    string txt3 = "Let's go"; 

    string line = String.Format("{0,-15} {1,-10} {2,10}", txt, txt2, txt3); 

    Console.WriteLine(line); 
    Console.ReadLine(); 

Explication:

Cela positionnera le texte entre la position 0-15 aligné à gauche:

{0, -15} = Premier rivet g [txt], 1 = Texte, -15 = nombre de caractères autorisés pour la chaîne, - = aligner à gauche

Cela positionnera le texte entre la position 16-26 aligné à droite:

{ 1, 10} = Second string [txt2], 1 = texte, 10 = quantité de caractères autorisés pour la chaîne, aligner à droite

Cela positionnera le texte entre la position 27-37 aligné à gauche:

{2, -10} = Troisième chaîne [txt3], 2 = Texte, -10 = nombre de caractères autorisés pour la chaîne, - = aligner à gauche

Questions connexes