在.Net(C#和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 & _
" |___/ ")
答案 0 :(得分:52)
您(最初)将此标记为c#,但显示VB代码。对于c#:使用@
说明符:
string myText =
@"line 1
line 2
line 3"
请注意,如果您不希望字符串开头有空行,请确保将@"
放在与文字第一行相同的行上,就像我上面所做的那样。
对于VB.NET,没有直接的支持,但你可以使用this answer中的好的黑客来解决它:
Dim s As String = <a>line 1
line 2
line 3</a>.Value
还考虑创建一个字符串资源;你可以在那里添加换行符(确保按照this answer中的注释使用shift-enter),然后使用类似于
的内容加载资源Dim myString As String = My.Resources.MyString
Visual Studio 2015的更新:显然vb.net在这里很难用,但从VS2015开始,它支持多行字符串,类似于c#逐字字符串,但没有前面的@
。
请注意,字符串中嵌入的行终止符是您选择的编辑器提供的实际行终止符。对于VS,这是\r\n
。
示例:
来源here。
对于VS2015 / C#6中引入的新interpolated strings,在C#中使用$@
作为字符串的前缀:
string multiline = $@"
[configuration]
name=Fred
age={age}";
在VB.NET中,只需忽略@
:
Dim multiline As String = $"
[configuration]
name=Fred
age={age}"
答案 1 :(得分:16)
在C#中,您可以使用原始字符串(@),如下所示:
private string Logo = @"
__ __ _
\ \ / / | |
\ V /___ _ _ _ __ | | ___ __ _ ___
\ // _ \| | | | '__| | | / _ \ / _` |/ _ \
| | (_) | |_| | | | |___| (_) | (_| | (_) |
\_/\___/ \__,_|_| \_____/\___/ \__, |\___/
__/ |
|___/ ";
答案 2 :(得分:11)
使用逐字字符串。
@
符号告诉字符串构造函数忽略换行符。
有关详细信息,请参阅MSDN。字符串文字与逐字字符串
例如
string verbatim = @"v
e
r
batim"
你的例子
Dim Logo As String = (@"
__ __ _
\ \ / / | |
\ V /___ _ _ _ __ | | ___ __ _ ___
\ // _ \| | | | '__| | | / _ \ / _` |/ _ \
| | (_) | |_| | | | |___| (_) | (_| | (_) |
\_/\___/ \__,_|_| \_____/\___/ \__, |\___/
__/ |
|___/ ")
Console.WriteLine(Logo)
答案 3 :(得分:4)
是的,您应该使用@
符号:
string t = @"t
e
s
t"
答案 4 :(得分:1)
有点......
这样做:
Dim logo = " " & vbCrLf & _
"__ __ " & vbCrLf & _
"\ \ / / | | " & vbCrLf & _
等