Многострочная строковая переменная
В .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 & _
" |___/ ")
Ответы
Ответ 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 & _
и др.