35

在 .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 & _
"                                    |___/       ")
4

5 回答 5

64

您(最初)将此标记为 c#,但显示 VB 代码。对于 c#:使用说明@符:

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 开始,它以类似于 c# 逐字字符串的方式支持多行字符串,但没有前面的@.

请注意,嵌入在字符串中的行终止符是您选择的编辑器提供的实际行终止符。对于 VS,这是\r\n.

例子:

在此处输入图像描述

来源在这里

对于VS2015 / C# 6 中引入的新插值字符串$@,在 C# 中为字符串添加前缀:

string multiline = $@"
[configuration]
name=Fred
age={age}";

在 VB.NET 中,只需省略@

Dim multiline As String = $"
[configuration]
name=Fred
age={age}"
于 2013-04-19T15:08:30.767 回答
18

在 C# 中,您可以使用原始字符串 (@),如下所示:

        private string Logo = @"
__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       ";
于 2013-04-19T15:08:34.580 回答
15

使用逐字字符串。

@符号告诉字符串构造函数忽略换行符。

有关详细信息,请参阅MSDN。字符串文字与逐字字符串

例如

string verbatim = @"v
                    e
                    r
                    batim"

你的例子

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

Console.WriteLine(Logo)
于 2013-04-19T15:10:08.933 回答
5

是的,您应该使用@符号:

string t = @"t
e
s
t"
于 2013-04-19T15:08:08.237 回答
3

有点儿...

它是这样完成的:

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

等等

于 2013-04-19T15:09:37.030 回答