2012-08-14 15 views
7

Duplicar posible:
Multiline strings in VB.NET¿Tiene VB.NET una sintaxis de declaración de cadena multilínea equivalente a C#?

en C#, puede ser todo como:

 
string s = @"hello 
there 
mister"; 

¿Se VB.NET tienen algo similar que no implique la concatenación de cadenas ? Me gustaría poder pegar texto multilínea entre dos comillas dobles. De alguna manera, no creo que VB.NET sea compatible con esto.

+0

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

+0

En VB.NET 14 ahora puede hacer [String Interpolation] (https://msdn.microsoft.com/en-GB/library/dn961160.aspx) - Entonces: 'dim multiline = $" Multiliine String! "' –

+0

@LukeTO 'Brien En realidad, ni siquiera necesitas interpolación para eso en el nuevo VB. – oscilatingcretin

Respuesta

14

No hay literal de cadena multilínea en VB .NET: lo más parecido que se puede obtener (sin utilizar LINQ) es una sentencia de varias líneas con concatenación.

Antes de VS2010:

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

después de 2010:

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

El XML/LINQ truco es:

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

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

pero esto limita lo que los personajes se puede colocar dentro de la <a></a> bloque debido a la semántica XML. Si es necesario utilizar caracteres especiales ajustar el texto en un bloque estándar CDATA:

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

Creo que la interpolación de cadenas https://msdn.microsoft.com/en-GB/library/dn961160.aspx funciona para la línea múltiple –

+0

¿Podría actualizar esta respuesta ahora que VB.NET 14 admite literales multilínea: https: // msdn .microsoft.com/es-es/gb/magazine/dn890368.aspx –

2

No sé si es la mejor manera de hacerlo, pero no creo que haya un operador equivalente.

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

creo que el Environement.NewLine toma el salto de línea correcta, dependiendo del sistema operativo.

EDIT: acabo de leer que desea insertar de varias líneas de texto directamente en el código, así que no hay otra solución posible:

Usted tiene que usar citas de cuerda todavía, y comas, pero aquí está

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

Lamentablemente, esta solución aún no satisface mi solicitud inicial de 'Me gustaría poder pegar texto multilínea entre dos comillas dobles'. Para volver a juntar este conjunto de cadenas, todavía tendría que confiar en la concatenación de alguna forma, ya sea uniendo la matriz en 'VbCrLf' o usando' & = 'en un ciclo. Gracias, sin embargo. – oscilatingcretin

5

No, pero se puede utilizar un truco de XML como esto:

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

o pon tu cadena en un recurso del proyecto.

Cuestiones relacionadas