Я новичок в программировании, я недавно получил степень по информатике и немного борюсь с кодом, в настоящее время я изучаю C #.

Я пытаюсь получить строку в массиве, чтобы сократить объем кода и упростить его форматирование в консоли.

Мой код:

 string [] sInvite = new string[]
         {
            "*********************************************"

                               +sGuest+
                    "is invited to the wedding of:"
                    + sBride + " and " + sGroom +
                "On Saturday 17 July 2016 at 2:00pm",

            "*********************************************"
         };  

Вот как я это вывожу

Console.WriteLine(sInvite);

И это фактический вывод в консоли, явно не то, что я хотел

system.String[]

Любые идеи о том, как я могу заставить это работать, или что я делаю не так?

c#
0
Chris 17 Окт 2015 в 18:43

6 ответов

Лучший ответ

Используйте такую ​​дословную строку:

string sInvite = @"

*********************************************

                   " + sGuest + @"
        is invited to the wedding of:
        " + sBride + @" and " + sGroom + @"
    On Saturday 17 July 2016 at 2:00pm

*********************************************";

Console.WriteLine(sInvite);
5
Yacoub Massad 17 Окт 2015 в 15:49

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

var string1 = String.Format(@"
*********************************************
                  {0}
        is invited to the wedding of:
             {1} and {2}
    On Saturday 17 July 2016 at 2:00pm

*********************************************",sGuest,sBride,sGroom);

Console.Writeline(string1);

0
Kayani 17 Окт 2015 в 17:41

Я пошел по другому пути, чем все другие ответы здесь, чтобы убедиться, что ваш текст всегда был по центру. Я догадался, что вы этого хотите, по тому, как вы отформатировали свой код. Итак, вот мой ответ:

int width = 45;
string sGuest = "Nasreddine";
string sBride = "Jane";
string sGroom = "John";

Console.WriteLine(new String('*', width));
Console.WriteLine(Center(sGuest, width));
Console.WriteLine(Center("is invited to the wedding of:",width));
Console.WriteLine(Center(sBride + " and " + sGroom, width));
Console.WriteLine(Center("On Saturday 17 July 2016 at 2:00pm", width));
Console.WriteLine(new String('*', width));

И это функция, которая следит за тем, чтобы текст был центрирован:

public static string Center(string str, int length)
{
    if (string.IsNullOrWhiteSpace(str))
    {
        return new String(' ',length);
    }

    if (str.Length >= length)
    {
        return str;
    }

    var halfDiff = (length - str.Length)/2.0;
    return string.Format("{0}{1}", new String(' ', (int) Math.Floor(halfDiff)), str) ;
}

А вот живая демонстрация

0
Nasreddine 17 Окт 2015 в 16:06

В этом случае строковый массив не нужен. Вы можете использовать дословную строку, например эту

 string sInvite = 
     @"*********************************************"

                           +sGuest+
                "is invited to the wedding of:"
                + sBride + " and " + sGroom +
            "On Saturday 17 July 2016 at 2:00pm",

        "*********************************************";

@ позволяет вам написать string в две или более строк.

Если вы настаиваете на использовании массива, вы можете сделать Console.WriteLine(String.Join(" ", sInvite));, он преобразует ваш массив в string, используя первое в качестве разделителя для позиций массива.

0
LINQ 17 Окт 2015 в 15:50

Вы создали массив строк, содержащий единственный элемент. Вы можете просто сохранить эту строку как строку и распечатать ее. Одна вещь, которую вы могли бы сделать, если хотите продолжать использовать массив, - это string.Join () элементы массива вместе с разделителем, например \ n. Затем выведите полученную строку.

0
Rikki Gibson 17 Окт 2015 в 15:46

Если вы используете C # 6, вы можете взять ответ Якуба Массада и вместо этого использовать строковая интерполяция:

string sInvite = $@"
*********************************************

                   {sGuest}
        is invited to the wedding of:
        {sBride} and {sGroom}
    On Saturday 17 July 2016 at 2:00pm

*********************************************";
6
Community 23 Май 2017 в 11:58