новая строка в многострочную строку - PullRequest
8 голосов
/ 13 апреля 2010

Попытка переопределить tostring в одном из моих классов.

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

Но дело в том, что при распечатке результат не выравнивается:

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

Попытка добавить \ n просто распечатывает его без форматирования. Угадай, что это как-то связано с @ "", который я использую для мультилининга.

Хотелось бы распечатать:

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

Ответы [ 5 ]

14 голосов
/ 13 апреля 2010

Если вы добавите пробелы впереди, он будет напечатан таким образом.

Обычно я так делаю.

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

Обновление: возможно, более симпатичная альтернатива:

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

return string.Format(
         string.Join(Environment.Newline, lines), 
         arg0, arg1, arg2, arg3);
6 голосов
/ 13 апреля 2010

Символ @ перед строкой отключает стандартное форматирование строки C #, попробуйте

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

Нельзя использовать @ и использовать \ n, \ t и т. Д.

EDIT

Это - ИМХО - так хорошо, как это получается

 return string.Format("name = {0}\n" + 
                      "ID = {1}\n" + 
                      "sec nr = {2}\n" + 
                      "acc nr = {3}", 
                       string, int, int ,int); 
4 голосов
/ 20 апреля 2010

Решение от 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
*/
1 голос
/ 09 апреля 2015
String.Join(Environment.NewLine, value.Select(i => i)

где значения - это набор строк

0 голосов
/ 13 апреля 2010

Нет, там все места, которые у вас есть.

...