2012-08-14 8 views
7

Mögliche Duplizieren:
Multiline strings in VB.NETHat VB.NET eine mehrzeilige String-Deklarationssyntax wie in C#?

In C# können Sie alle wie:

 
string s = @"hello 
there 
mister"; 

Hat VB.NET etwas ähnliches, die nicht String-Verkettung mit sich bringt ? Ich möchte mehrzeiligen Text zwischen zwei doppelten Anführungszeichen einfügen können. Irgendwie glaube ich nicht, dass VB.NET dies unterstützt.

+0

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

+0

In VB.NET 14 können Sie jetzt tun [String Interpolation] (https://msdn.microsoft.com/en-GB/library/dn961160.aspx) - Also: 'dim multiline = $" Multilinie String! "' –

+0

@LukeTO Brien Sie brauchen eigentlich keine Interpolation dafür in der neuen VB. – oscilatingcretin

Antwort

14

In VB .NET gibt es kein mehrzeiliges Zeichenfolgenliteral - das nächste, was Sie erhalten können (ohne LINQ zu verwenden), ist eine mehrzeilige Anweisung mit Verkettung.

Vor VS2010:

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

Beitrag 2010:

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

Die XML/LINQ Trick ist:

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

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

Aber diese Grenzen, welche Zeichen Sie in der <a></a> platzieren wegen der XML-Semantik blockieren. Wenn Sie Sonderzeichen verwenden, wickeln Sie den Text in einem Standard-CDATA Block:

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

Ich glaube String-Interpolation https://msdn.microsoft.com/en-GB/library/dn961160.aspx funktioniert für multiline –

+0

Könnten Sie diese Antwort jetzt aktualisieren, dass VB.NET 14 unterstützt Multiline-Literale: https: // msdn .microsoft.com/de-gb/magazin/dn890368.aspx –

2

Ich weiß nicht, ob es der beste Weg ist, dies zu tun, aber ich denke nicht, dass es einen gleichwertigen Operator gibt.

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

Ich denke, die Environement.NewLine den richtigen Zeilenvorschub erfolgt, auf dem O abhängig.

EDIT: Ich habe gerade gelesen, dass Sie Text mehrzeilige direkt in den Code eingefügt werden soll, so ist es eine andere mögliche Lösung:

Sie haben noch String Zitate zu verwenden, und Kommas, aber hier ist es

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

Leider erfüllt diese Lösung meine anfängliche Anforderung "Ich möchte mehrzeiligen Text zwischen zwei doppelten Anführungszeichen einfügen können" immer noch nicht. Um dieses String-Array wieder zusammen zu bringen, müsste ich mich immer noch auf eine Verkettung in irgendeiner Form verlassen, sei es das Array an 'VbCrLf' anzuschließen oder' & = 'in einer Schleife zu verwenden. Trotzdem danke. – oscilatingcretin

5

Nein, aber Sie können einen xML-Trick wie folgt verwenden:

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

oder setzen Sie Ihre Zeichenfolge in eine Projektressource.