2010-04-13 5 views
7

Je souhaite substituer une première chaîne dans l'une de mes classes.nouvelle ligne dans une chaîne multiligne

return string.Format(@" name = {0} 
         ID = {1} 
         sec nr = {2} 
         acc nr = {3}", string, int, int ,int); // types 

Mais la chose est, le résultat est pas aligné lors de l'impression sur:

name = test 
            ID = 42 
            sec nr = 11 
            acc nr = 55 

Essayer d'ajouter \ n juste imprime sans formattage. Deviner cela a quelque chose à voir avec @ "" que j'utilise pour multi-doublure.

Souhaite à imprimer:

name = test 
ID = 42 
sec nr = 11 
acc nr = 55 

Répondre

14

Si vous ajoutez des espaces à l'avant, il sera imprimé de cette façon.

Je le fais normalement comme ça.

return string.Format(
@" name = {0} 
ID = {1} 
sec nr = {2} 
acc nr = {3}", string, int, int ,int); // types 

Mise à jour: Peut-être une plus jolie autre:

string[] lines = 
{ 
    " name = {0}", 
    " ID = {1}", 
    " sec nr = {2}", 
    " acc nr = {3}" 
}; 

return string.Format(
     string.Join(Environment.Newline, lines), 
     arg0, arg1, arg2, arg3); 
+2

qui fonctionne, il est donc une solution, mais le code semble si laid sans indentation. Peut-on faire cela un peu mieux? – Milan

+1

@Zka: Pas vraiment, c'est à peu près le meilleur que vous pouvez l'obtenir :( – leppie

+1

Merci pour l'alternative, il semble mieux et est tout à fait gérable pour mes fins – Milan

5

Le @ avant la chaîne arrête la mise en forme de chaîne standard C#, essayez

return string.Format(" name = {0}\n ID = {1} \n sec nr = {2} \n acc nr = {3}", 
         string, int, int ,int); // types 

Vous ne pouvez pas utiliser le @et utilisez \ n, \ t etc.

EDIT

Ceci est - à mon humble avis - aussi bon qu'il obtient

return string.Format("name = {0}\n" + 
         "ID = {1}\n" + 
         "sec nr = {2}\n" + 
         "acc nr = {3}", 
         string, int, int ,int); 
+2

\ n n'est pas très convivial Windows ... – leppie

+0

En fait oui, cela fonctionne mais j'ai vraiment besoin qu'il soit multi-ligne car il y a plus d'informations à ajouter – Milan

+0

@leppie: Désolé, pourquoi pas Windows Friendly? –

0

Non, il est tous les espaces que vous avez là-dedans.

+0

+1 neutralisé Qu'est-ce qui ne va pas avec cette réponse? raison plutôt que d'une solution, je l'admets cependant. – Amsakanna

+0

Ouais, aurait dû mettre un peu plus d'effort dans cette réponse. Mea culpa. – ben

4

Une solution de msdn:

// Sample for the Environment.NewLine property 
using System; 

class Sample 
{ 
    public static void Main() 
    { 
    Console.WriteLine(); 
    Console.WriteLine("NewLine: {0} first line{0} second line{0} third line", 
          Environment.NewLine); 
    } 
} 
/* 
This example produces the following results: 

NewLine: 
    first line 
    second line 
    third line 
*/ 
+0

Intéressant, je n'aurais jamais pensé à ça –

1
String.Join(Environment.NewLine, value.Select(i => i) 

où les valeurs est une collection de chaînes

Questions connexes