2012-08-14 8 views
7

Eventuali duplicati:
Multiline strings in VB.NETVB.NET ha una sintassi di dichiarazione di stringa su più righe equivalente a C#?

in C#, si può essere tutti come:

 
string s = @"hello 
there 
mister"; 

Vuol VB.NET avere qualcosa di simile che non coinvolge concatenazione di stringhe ? Mi piacerebbe essere in grado di incollare testo multilinea tra due virgolette doppie. In qualche modo, non credo che VB.NET supporti questo.

+0

[Environment.NewLine] (http://msdn.microsoft.com/en-us/library/system.environment.newline. aspx # Y0) – slugster

+0

In VB.NET 14 ora puoi fare [String Interpolation] (https://msdn.microsoft.com/en-GB/library/dn961160.aspx) - Quindi: 'dim multiline = $" Multilinea Stringa! "' –

+0

@LukeTO 'Brien In realtà non hai nemmeno bisogno di interpolazione per questo nel nuovo VB. – oscilatingcretin

risposta

14

Non esiste una stringa letterale multi-linea in VB .NET: la cosa più vicina che è possibile ottenere (senza utilizzare LINQ) è un'istruzione multilinea con concatenazione.

Prima di VS2010:

Dim x = "some string" & vbCrlf & _ 
     "the rest of the string" 

Messaggio 2010:

Dim x = "some string" & vbCrlf & 
     "the rest of the string" 

L'XML/LINQ trucco è:

Imports System.Core 
Imports System.XML 
Imports System.XML.Linq 

Dim x As String = <a>Some code 
and stuff</a>.Value 

ma questo limiti quali caratteri è possibile inserire all'interno del <a></a> blocco a causa della semantica XML. Se è necessario utilizzare caratteri speciali avvolgono il testo in un blocco standard CDATA:

Dim x As String = <a><![CDATA[Some code 
& stuff]]></a>.Value 
+0

Credo che l'interpolazione stringa https://msdn.microsoft.com/en-GB/library/dn961160.aspx funzioni per multilinea –

+0

È possibile aggiornare questa risposta ora che VB.NET 14 supporta i letterali su più righe: https: // msdn .microsoft.com/it-IT/magazine/dn890368.aspx –

2

Non so se è il modo migliore per farlo, ma non penso che ci sia un operatore equivalente.

Dim myString As String = 
"Hello" & Environment.NewLine & "there" & Environment.NewLine & "mister" 

Credo che il Environement.NewLine prende la linea di alimentazione corretta, a seconda del sistema operativo.

EDIT: Ho appena letto che si desidera inserire testo multilinea direttamente nel codice, quindi non c'è un'altra soluzione possibile:

Devi usare citazioni stringa ancora, e le virgole, ma qui è

Dim myList as new List(of String) (new String(){ 
     "Hello", 
     "there", 
     "mister" 
    }) 

    Dim result as String 

    For Each bob as String In myList 
     result += bob & Environment.NewLine 
    next 
+0

Sfortunatamente, questa soluzione non soddisfa ancora la mia richiesta iniziale di "Mi piacerebbe essere in grado di incollare testo multilinea tra due virgolette doppie". Per rimettere insieme questo array di stringhe, dovrei comunque fare affidamento sulla concatenazione in qualche forma, che si tratti di unire l'array a 'VbCrLf' o di usare' & = 'in un ciclo. Grazie comunque. – oscilatingcretin

5

Senza, ma si può usare un trucco xml come questa:

Dim s As String = <a>hello 
there 
mister</a>.Value 

o inserire la stringa in una risorsa di progetto.

Problemi correlati