Как создавать многострочные строки?

#c#

#c#

Вопрос:

Мне интересно, как вы можете создавать многострочные строки без знака concat ( )

Я пробовал это

  string a = String.Format(@"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
                                            {0}xxxxxxx", "GGG");

            string b = @"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
                                            xxxxxxx";


            string c = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
                                              "xxxxxxx";
           Console.WriteLine(a);
           Console.WriteLine(b);
           Console.WriteLine(c);
  

Это работает, но первые 2 отображают много пробелов. Можно ли написать многострочные строки без знака concat и игнорировать конечный пробел, не используя что-то вроде replace после отображения строки?

Редактировать

 using System; using
System.Collections.Generic; using
System.Linq; using System.Text;

namespace ConsoleApplication2 {
    public class Test
    {

        public Test()
        {
        }

        public void MyMethod()
        {
            string someLongString = "On top of an eager overhead weds a
pressed vat.  How does a chance cage
the contract? The glance surprises the
radical wild.";
        }

} }
  

Посмотрите, как все идет правильно, хотя мое форматирование фигурных скобок и торчит наружу (извините, немного сложно показать в стеке, но оно торчит слишком далеко).

Печально то, что notepad справляется с этой задачей лучше, и когда он оборачивается, он попадает прямо под переменную.

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

1. Только не добавляйте все эти лишние пробелы…

2. Каков вариант использования для этого?

3. Я либо 1) Выравниваю последующие строки литерала по левому краю. (В любом случае, отступы должны быть сделаны вручную, так что это на самом деле «проще») 2) Поместите строковый литерал в файл ресурсов (однако использование редактора строковых ресурсов по умолчанию вызывает раздражение) или 3) Просто используйте подход конкатенации. Удачного кодирования.

4. @chobo2, ты можешь пойти по большому пути и поместить эти строки в ресурсы. Это также обеспечивает вам локализацию практически бесплатно.

5. @ RedFilter = Подумайте, если у меня получилось очень длинное предложение, которое я хочу разбить на несколько строк, чтобы его было легче читать в коде.

Ответ №1:

Просто удалите пробел. Это может быть некрасиво, но это работает:

 string a = @"this is the first line
and this is the second";
  

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

многострочная дословная строка

В качестве альтернативы вы можете использовать n символ, но тогда вы не сможете использовать дословные строки (префикс @-):

 string a = "first linensecond line";
  

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

1. Я просто пытаюсь сделать длинные предложения более читаемыми в коде, пока. Поэтому я не думаю, что второй вариант сработает.

2. @chobo2: Я бы сказал, что длинные предложения должны быть не в коде в первую очередь, а скорее в файле ресурсов.

Ответ №2:

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

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

1. Это очень плохо. Какой рекомендуемый способ сделать длинное предложение в коде читаемым для программиста и сохранить форматирование для отображения? Я нахожу это несколько раз на странице, если у вас длинное предложение или что-то в этом роде, и вам нужно начать использовать знак concat. Найти это затрудняет чтение. Также, как и в моем первом примере, что происходит, когда вы получаете длинное предложение в строке. Форматируйте, как вы можете разбить это на части, чтобы это была не одна строка.

2. @chobo2 Самый простой способ — включить перенос слов в вашем редакторе, смотрите Мой ответ.

3. @chobo2: Обычно я нахожу, что если мне нужно большое количество текста в коде, лучше включить его в отдельный ресурс в сборке. Таким образом, мне не нужно беспокоиться об экранировании и т.д.

4. Вы можете поместить заменители в файлы ресурсов? Итак, если, скажем, у меня есть предложение типа «Мистер Боб, привет, как дела …..», я мог бы добавить «{0} {1}, привет, как дела».

5. @chobo2: Вы можете поместить строку в файл ресурсов, а затем использовать string.Format как обычно.

Ответ №3:

Любой пробел, который вы включаете в многострочную строку, всегда будет включен.

Однако … попробуйте отформатировать свой код следующим образом:

 string a = String.Format(
@"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
{0}xxxxxxx", "GGG");
  

… надеюсь, это выглядит лучше.

Ответ №4:

Решение состоит в том, чтобы включить перенос слов при просмотре кода, подобного этому. Это сохранит форматирование и позволит вам просмотреть всю строку в обернутом виде без необходимости прокрутки в редакторе.

Вы можете сделать это, нажав Ctrl e, W или выбрав Редактировать / Дополнительно / Перенос слов в меню.

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

1. Хорошо, я думал, что это будет решением проблемы, но одна вещь, которую я заметил и которая мне не нравится, это то, что она искажает форматирование (см. Мою правку)

Ответ №5:

Вы можете сделать это, сохраняя форматирование кода, предполагая следующее:

  • Регулярное выражение приемлемо
  • Длина пробелов в ваших строках всегда не превышает 1 символа:


var words = Regex.Replace(
@"lorem ipsum dolor sit amet consectetur adipiscing
elit sed feugiat consectetur pellentesque nam ac
elit risusac blandit dui duis rutrum porta tortor ut
convallis duis rutrum porta tortor ut yth convallis
lorem ipsum dolorsit amet consectetur adipiscing elit
sed feugiat consectetur pellentesque nam ac elit
risus ac blandit dui duis rutrum porta tortor ut
convallis duis rutrum porta tortor ut convallis
", @"s ", " ");