2013-04-19 16 views
26

NET (C# e VB.NET) Se ho un testo su più righe come questo:stringa multilinea variabile

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

Posso impostare la variabile in questo modo?

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

Console.WriteLine(Logo) 

... invece di questo altro:

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

... o questo altro:

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

Beh, C# facile. Basta renderlo [letteralmente letterale] (http://msdn.microsoft.com/en-us/library/aa691090 (v = VS.71) .aspx) – Silvermind

+3

Questo è così retrò, mi aspetto che le persone inizino a parlare sui codici AT e le password BBS. –

+0

Questo è qualcosa che vorrei aggiungere come risorsa. – hometoast

risposta

45

L'utente (inizialmente) lo ha contrassegnato come C#, ma mostra il codice VB. Per C#: utilizzare il @ specificatore:

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

Si noti che se non si desidera una riga vuota all'inizio della stringa, assicuratevi di mettere il @" sulla stessa linea come la prima riga del testo , come ho fatto sopra.

per VB.NET, non v'è alcun supporto diretto per questo, ma è possibile utilizzare il bel trucco da this answer per aggirare l'ostacolo:

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

Considera anche la creazione di una risorsa di stringa; è possibile aggiungere interruzioni di riga in là (assicurarsi di utilizzare shift-entrare, per la nota in this answer), quindi caricare la risorsa utilizzando qualcosa di simile a

Dim myString As String = My.Resources.MyString 

Aggiornamento per Visual Studio 2015: Ovviamente vb.net è stato il caso difficile qui, ma a partire da VS2015 supporta stringhe multi-linea in modo simile alle stringhe di C# verbatim, ma senza il precedente @.

Si noti che i terminatori di riga incorporati nella stringa sono i terminatori di linea effettivi forniti dal proprio editor di scelta. Per VS questo è \r\n.

Esempio:

enter image description here

Fonte here.

Per la nuova interpolated strings introdotto nel VS2015/C# 6, anteporre la stringa con [email protected] in C#:

string multiline = [email protected]" 
[configuration] 
name=Fred 
age={age}"; 

In VB.NET, basta lasciare la @:

Dim multiline As String = $" 
[configuration] 
name=Fred 
age={age}" 
+0

Grazie per aver mostrato esempi di ogni due, ottimo trucco! – ElektroStudios

+1

A seconda dei caratteri nei dati, è possibile anche posizionare un elemento CDATA XML interno per evitare problemi di codifica con un paio di caratteri. Per esempio. .Valore – DarrenMB

+0

Se si desidera utilizzare valori letterali stringa e interpolazione a più righe anche in C# 6/VS 2015, è necessario utilizzare $ @ all'inizio della stringa (al contrario di @ $). –

4

Sì, si dovrebbe usare @ simbolo:

string t = @"t 
e 
s 
t" 
16

In C# è possibile utilizzare stringhe non elaborate (@), ad esempio:

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

Tipo...

E 'fatta così:

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

ecc

11

stringhe Usa Verbatim.

Il simbolo @ indica al costruttore di stringhe di ignorare le interruzioni di riga.

Vedere MSDN per ulteriori informazioni. Le stringhe letterali vs Verbatim stringhe

Per esempio

string verbatim = @"v 
        e 
        r 
        batim" 

Il vostro esempio

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

Console.WriteLine(Logo) 
+3

non solo interruzioni di riga, ma tutti i simboli speciali come \ r \ n ets. –

+0

'@' è letterale stringa letterale. Ci sono altri letterali come \ b, 'a', \ n, \ r ... @ è generalmente noto come stringa letterale, buona spiegazione +1 –

Problemi correlati