web-dev-qa-db-ja.com

複数行の文字列変数

.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 & _
"                                    |___/       ")
30
ElektroStudios

あなたは(最初)これをc#とマークしましたが、VBコードを表示します。c#の場合:@指定子:

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

文字列の先頭に空白行が必要ない場合は、@"上記のように、テキストの最初の行と同じ行に。

VB.NETの場合、これを直接サポートすることはできませんが、 this answer からNiceハックを使用して回避できます。

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

例:

enter image description here

ソース ここ

VS2015/C#6で導入された新しい 補間文字列 の場合、文字列の前に$@ C#の場合:

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

VB.NETでは、@

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

C#では、次のように生の文字列(@)を使用できます。

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

Verbatim文字列を使用します。

@記号は、改行を無視するように文字列コンストラクターに指示します。

詳細については、 [〜#〜] msdn [〜#〜] を参照してください。文字列リテラルと逐語的文字列

例えば

string verbatim = @"v
                    e
                    r
                    batim"

あなたの例

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

Console.WriteLine(Logo)
13
Sam Leach

はい、@シンボルを使用する必要があります。

string t = @"t
e
s
t"
4

やや...

これは次のように行われます。

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

等.

1
Captain Skyhawk