Member 13029506 Ответов: 3

Можно ли сделать две строки выходного текста в одной строке в C#?


Есть ли какой-нибудь способ сделать две строки выходного текста в одной строке, если они находятся в разных циклах for? Ниже приведен код, который я хочу отредактировать:

foreach (object s in roomType)
              {
                      ++roomCounter;
                      Console.WriteLi("Room {0}   Name: {1}  State : {2} ", roomCounter, s); // first line  want to concatenate

              }

              foreach (object t in FurnishedFinished)
              {
                  ++roomCounter;
                  Console.Write(" State : {0} ",t); // second line    }



Я хочу, чтобы выход был -
"Room {0}   Name: {1}  State : {2} State :{3}"

но я не могу сделать вложенный цикл for, потому что есть и другие проблемы, которые постоянно возникают, если я использую вложенный метод.

Что я уже пробовал:

foreach (object s in roomType)
                {
                        ++roomCounter;
                        Console.Write("Room {0}   Name: {1}  State : {2} ", roomCounter, s); // first line  want to concatenate 
                    
                }

                foreach (object t in FurnishedFinished)
                {
                    ++roomCounter;
                    Console.Write(" State : {0} ",t); // second line    }

ZurdoDev

Вложенные-это то, что вам придется делать. Приставка.В этот момент запись записывается на консоль, поэтому, если вы хотите, чтобы они были в строке, вложите свои циклы.

3 Ответов

Рейтинг:
2

Graeme_Grant

Взгляните на StringBuilder: Использование класса StringBuilder в .NET Framework[^]


Рейтинг:
1

Patrice T

Самое простое решение-не использовать цикл foreach и заменить его простым циклом for:

for (int i=0; i< roomtype.length; i++)
{
    ++roomCounter;
    Console.Write("Room {0}   Name: {1}  State : {2} ", roomCounter, roomType[i]); // first line  want to concatenate 
    Console.Writeli(" State : {0} ", FurnishedFinished[i]); // second line
}


Рейтинг:
0

OriginalGriff

Пример, который вы приводите, не будет работать - вы предоставляете только два аргумента, но указываете три в строке формата.
Вы не можете делать то, что хотите напрямую - как только вы выводите данные на консоль, вы не можете так легко вернуться и добавить к строкам.
Попробовать это:

List<StringBuilder> lines = new List<StringBuilder>();
foreach (object s in roomType)
    {
    StringBuilder sb = new StringBuilder();
    sb.AppendFormat("Room {0}   Name: {1}  State : {2} ", roomCounter++, s, "hello third Parameter");
    lines.Add(sb);
    }
int i = 0;
foreach (object t in FurnishedFinished)
    {
    lines[i++].AppendFormat(" State : {0} ", t);
    }
foreach (StringBuilder sb in lines)
    {
    Console.WriteLine(sb.ToString());
    }