web-dev-qa-db-fra.com

Variable de chaîne multiligne

En .Net (C # et VB.NET) Si j'ai un texte multiligne comme celui-ci:

__   __                 _                       
\ \ / /                | |                      
 \ V /___  _   _ _ __  | |     ___   __ _  ___  
  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ 
  | | (_) | |_| | |    | |___| (_) | (_| | (_) |
  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ 
                                     __/ |      
                                    |___/       

Puis-je définir la variable comme ceci?

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

Console.WriteLine(Logo)

... au lieu de ça:

    Console.WriteLine("__   __                                         ")
    Console.WriteLine("\ \ / /                | |                      ")
    Console.WriteLine(" \ V /___  _   _ _ __  | |     ___   __ _  ___  ")
    Console.WriteLine("  \ // _ \| | | | '__| | |    / _ \ / _` |/ _ \ ")
    Console.WriteLine("  | | (_) | |_| | |    | |___| (_) | (_| | (_) |")
    Console.WriteLine("  \_/\___/ \__,_|_|    \_____/\___/ \__, |\___/ ")
    Console.WriteLine("                                     __/ |      ")
    Console.WriteLine("                                    |___/       ")

... ou bien ceci:

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

Vous (initialement) avez marqué cela comme c #, mais affichez VB code. Pour c #: utilisez le @ spécificateur:

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

Notez que si vous ne voulez pas de ligne vierge au début de votre chaîne, assurez-vous de mettre le @" sur la même ligne que la première ligne de votre texte, comme je l'ai fait ci-dessus.

Pour VB.NET, il n'y a pas de support direct pour cela, mais vous pouvez utiliser le hack Nice de cette réponse pour le contourner:

Dim s As String = <a>line 1
line 2
line 3</a>.Value

Pensez également à créer une ressource de chaîne; vous pouvez y ajouter des sauts de ligne (assurez-vous d'utiliser shift-enter, selon la note de cette réponse ), puis chargez la ressource en utilisant quelque chose de similaire à

Dim myString As String = My.Resources.MyString

Mise à jour pour Visual Studio 2015: Évidemment, vb.net était le cas difficile ici, mais à partir de VS2015, il prend en charge les chaînes multi-lignes d'une manière similaire aux chaînes verbatim c #, mais sans le précédent @.

Notez que les terminateurs de ligne incorporés dans la chaîne sont les terminateurs de ligne réels fournis par l'éditeur de votre choix. Pour VS, c'est \r\n.

Exemple:

enter image description here

Source ici .

Pour le nouveau chaînes interpolées introduit dans VS2015/C # 6, préfixez la chaîne avec $@ en C #:

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

Dans VB.NET, laissez simplement le @:

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

En C #, vous pouvez utiliser des chaînes brutes (@), comme ça:

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

Utilisez des chaînes Verbatim.

Le symbole @ Indique au constructeur de chaîne d'ignorer les sauts de ligne.

Voir MSDN pour plus d'informations. Littéraux de chaîne vs chaînes Verbatim

Par exemple

string verbatim = @"v
                    e
                    r
                    batim"

Votre exemple

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

Console.WriteLine(Logo)
13
Sam Leach

Oui, vous devez utiliser @ symbole:

string t = @"t
e
s
t"
4
Dzmitry Martavoi

Genre de...

C'est fait comme ça:

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

etc.

1
Captain Skyhawk