Как разделить строку записи на несколько строк?

#c#

#c#

Вопрос:

Это пример синтаксиса, который я пробовал, но не хочу использовать n .

 Console.WriteLine("x"
                  "x"
                  "x"
                  "x"
                  "x");
  

Один вызов должен выдать:

x 
x 
x 
x 
x

Комментарии:

1. Это кажется очень странным утверждением. Если вы не хотите использовать n , то все будет размещаться в одной строке.

2. Цель состоит в том, чтобы выписать много аргументов по строке на аргумент, или вы пытаетесь выписать одну многострочную строку? На последний вопрос ниже дан правильный ответ с использованием @»»

3. Я попробовал использовать @, и это сработало — так что последнее. Что вы имеете в виду под «многими аргументами по строке на аргумент»? Как бы это выглядело?

Ответ №1:

Один вызов не должен приводить к этому, потому что у вас есть два строковых литерала. На самом деле, это даже не будет компилироваться…

Попробуйте:

 Console.WriteLine("xnx");
  

Или на худой конец:

 Console.WriteLine(@"x
x");
  

Комментарии:

1. Почему вы не хотели бы использовать n ?

Ответ №2:

Вы могли бы упростить это и использовать строковые литералы в кавычках, такие как:

 Console.WriteLine(@"X
X
X
X
X
X");
  

Комментарии:

1. Ага. Каждый день изучайте что-то новое. Спасибо.

Ответ №3:

Если у вас есть коллекция элементов и вы хотите записать их все в отдельных строках, это всегда вариант:

 var myItems = new[] { "x", "x", "x", "x", "x" };
Console.WriteLine(String.Join(Environment.NewLine, myItems));
// or without the collection
Console.WriteLine(String.Join(Environment.NewLine, "x", "x", "x", "x", "x"));
  

Ответ №4:

Попробуйте это:

 Console.WriteLine(@"x
x
x
something
    notice this respects identation");
  

Ответ №5:

Не так просто, поскольку строка записи принимает только один элемент ввода или элемент с параметрами форматирования, поэтому либо

 Console.WriteLine("xnx"); 

or

Console.WriteLine("{0}n{1}n{2}","x","x","x");  
  

n это экранированный символ перевода строки

(второй пример форматов для 3-х x)

Вы могли бы рассмотреть несколько строк записи, по одной для каждого ‘x’?

Ответ №6:

Еще один вариант выглядит примерно так. (Хотя я думаю, что правильный ответ — использовать n .)

 static void Main(string[] args)
{
    WriteMulti("A", "B", "C", "D", "E", "F", "G");
    Console.ReadLine();
}

static void WriteMulti(params string[] args)
{
    foreach (string arg in args)
        Console.WriteLine(arg);
}
  

Ответ №7:

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

 /// <example>
    /// Console.WriteLine(new LinesItem("X", "X"));
    /// </example>
    public class LinesItem
    {
        private readonly string _lineSeparator;
        private readonly object[] _items;

        public LinesItem(params object[] items) : this("rn", items)
        {
            _items = items;
        }

        public LinesItem(string lineSeparator, params object[] items)
        {
            _lineSeparator = lineSeparator;
            _items = items;
        }

        public override string ToString()
        {
            return String.Join(_lineSeparator, _items.Select(x => x.ToString()).ToArray());
        }
    }

    //OR

    /// <summary>
    /// Because System.Console is a static class you cannot use Extension methods which would
    /// have been nice.  Instead you can simply make another static class to do extra things.
    /// </summary>
    /// <example>
    /// ExtendedConsole.WriteLines("X", "X");
    /// </example>
    public static class ExtendedConsole
    {
        public static void WriteLines(params object[] items)
        {
            foreach(var item in items)
            {
                Console.WriteLine(item);
            }
        }
    }
  

Ответ №8:

Вместо вызова строки записи вы просто вызываете Write:

 Console.Write("x");
Console.Write(Environment.NewLine);
Console.Write("x");
  

Комментарии:

1. Хотелось вызвать один метод.