Подтвердить что ты не робот

Многострочная строковая переменная

В .Net(С# и VB.NET) Если у меня есть многострочный текст:

__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       

Могу ли я установить такую ​​переменную?

Dim Logo As String = ("
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ")

Console.WriteLine(Logo)

... вместо этого:

    Console.WriteLine("__   __                                         ")
    Console.WriteLine("\ \ / /                | |                      ")
    Console.WriteLine(" \ V /___  _   _ _ __  | |     ___   __ _  ___  ")
    Console.WriteLine("  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ ")
    Console.WriteLine("  | | (_) | |_| | |    | |___| (_) | (_| | (_) |")
    Console.WriteLine("  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ ")
    Console.WriteLine("                                     __/ |      ")
    Console.WriteLine("                                    |___/       ")

... или это еще:

            Dim Logo As String = ( _
"__   __                 _                       " & vbNewLine & _
"\ \ / /                | |                      " & vbNewLine & _
" \ V /___  _   _ _ __  | |     ___   __ _  ___  " & vbNewLine & _
"  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ " & vbNewLine & _
"  | | (_) | |_| | |    | |___| (_) | (_| | (_) |" & vbNewLine & _
"  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ " & vbNewLine & _
"                                     __/ |      " & vbNewLine & _
"                                    |___/       ")
4b9b3361

Ответ 1

Вы (первоначально) отметили это как С#, но показывали код VB. Для С#: используйте спецификатор @:

string myText =
@"line 1
line 2
line 3"

Обратите внимание, что если вы не хотите пустую строку в начале строки, убедитесь, что вы поместите @" в ту же строку, что и первая строка текста, как я уже говорил выше.

Для VB.NET для этого нет прямой поддержки, но вы можете использовать хороший хак из этого ответа, чтобы обойти его:

Dim s As String = <a>line 1
line 2
line 3</a>.Value

Также рассмотрим создание строкового ресурса; вы можете добавить туда разрывы строк (убедитесь, что вы используете shift-enter, за заметку в этот ответ), затем загрузите ресурс, используя что-то похожее на

Dim myString As String = My.Resources.MyString

Обновление для Visual Studio 2015: Очевидно, что vb.net был трудным делом здесь, но по состоянию на VS2015 он поддерживает многострочные строки в стиле, аналогичном строковым строкам С#, но без предшествующего @.

Обратите внимание, что терминаторы строк, встроенные в строку, являются фактическими терминаторами строк, предоставленными вашим редактором. Для VS это \r\n.

Пример:

enter image description here

Источник здесь.

Для новых интерполированных строк, представленных в VS2015/С# 6, префикс строки с [email protected] в С#:

string multiline = [email protected]"
[configuration]
name=Fred
age={age}";

В VB.NET просто оставьте @:

Dim multiline As String = $"
[configuration]
name=Fred
age={age}"

Ответ 2

В С# вы можете использовать необработанные строки (@), например:

        private string Logo = @"
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ";

Ответ 3

Используйте строки Verbatim.

Символ @ указывает конструктору строки игнорировать разрывы строк.

Подробнее см. MSDN. Строковые литералы против строк Verbatim

Например

string verbatim = @"v
                    e
                    r
                    batim"

Ваш пример

Dim Logo As String = (@"
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ")

Console.WriteLine(Logo)

Ответ 4

Да, вы должны использовать символ @:

string t = @"t
e
s
t"

Ответ 5

Вид...

Сделано вот так:

Dim logo = " " & vbCrLf & _
"__   __                                         " & vbCrLf & _
"\ \ / /                | |                      " & vbCrLf & _

и др.