多行字符串变量

Ele*_*ios 30 .net c# vb.net string

在.Net(C#和VB.NET)如果我有这样的多行文字:

__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       
Run Code Online (Sandbox Code Playgroud)

我可以像这样设置变量吗?

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

Console.WriteLine(Logo)
Run Code Online (Sandbox Code Playgroud)

......而不是其他:

    Console.WriteLine("__   __                                         ")
    Console.WriteLine("\ \ / /                | |                      ")
    Console.WriteLine(" \ V /___  _   _ _ __  | |     ___   __ _  ___  ")
    Console.WriteLine("  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ ")
    Console.WriteLine("  | | (_) | |_| | |    | |___| (_) | (_| | (_) |")
    Console.WriteLine("  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ ")
    Console.WriteLine("                                     __/ |      ")
    Console.WriteLine("                                    |___/       ")
Run Code Online (Sandbox Code Playgroud)

......或者其他:

            Dim Logo As String = ( _
"__   __                 _                       " & vbNewLine & _
"\ \ / /                | |                      " & vbNewLine & _
" \ V /___  _   _ _ __  | |     ___   __ _  ___  " & vbNewLine & _
"  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ " & vbNewLine & _
"  | | (_) | |_| | |    | |___| (_) | (_| | (_) |" & vbNewLine & _
"  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ " & vbNewLine & _
"                                     __/ |      " & vbNewLine & _
"                                    |___/       ")
Run Code Online (Sandbox Code Playgroud)

Geo*_*off 54

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

string myText =
@"line 1
line 2
line 3"
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不希望在字符串的开头有空行,请确保将其@"放在与文本第一行相同的行上,如上所述.

对于VB.NET,没有直接的支持,但你可以使用这个答案的好的黑客来解决它:

Dim s As String = <a>line 1
line 2
line 3</a>.Value
Run Code Online (Sandbox Code Playgroud)

还要考虑创建一个字符串资源; 你可以在那里添加换行符(确保你使用shift-enter,根据这个答案中的注释),然后使用类似的东西加载资源

Dim myString As String = My.Resources.MyString
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2015更新:显然vb.net在这里很难用,但从VS2015开始,它支持多行字符串,类似于c#逐字字符串,但没有前面的@.

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

例:

在此输入图像描述

来源于此.

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

string multiline = $@"
[configuration]
name=Fred
age={age}";
Run Code Online (Sandbox Code Playgroud)

在VB.NET中,只需省略@:

Dim multiline As String = $"
[configuration]
name=Fred
age={age}"
Run Code Online (Sandbox Code Playgroud)


Vla*_*mir 16

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

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


Sam*_*ach 13

使用逐字字符串.

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

有关更多信息,请参阅MSDN.字符串文字与逐字字符串

例如

string verbatim = @"v
                    e
                    r
                    batim"
Run Code Online (Sandbox Code Playgroud)

你的榜样

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

Console.WriteLine(Logo)
Run Code Online (Sandbox Code Playgroud)

  • 不仅仅是换行符,还有所有特殊符号,比如\ r \n \n \n \n \n (3认同)

Dzm*_*voi 5

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

string t = @"t
e
s
t"
Run Code Online (Sandbox Code Playgroud)