c# - escape - ¿Cómo hacer una literal litera literal en VB.NET?
string c# ejemplos (7)
@MarkJ ya lo señaló en la publicación de @Jon Skeet.
VB.Net admite esta característica abominable , si es absolutamente necesario utilizar una versión literal a través de un XML Literal en línea.
¡Considera guardar en caché la cadena! No evalúes esto cada vez ...
Imports System.Xml.Linq
Dim cmdText as String = <![CDATA[
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1
]]>.Value
[editar 2015-Ene-5]
VB14 / VS2015 admite cadenas de varias líneas sin engaños.
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
¿Cómo se hace una literal litera literal en VB.NET?
Esto se logra en C # de la siguiente manera:
String str = @"c:/folder1/file1.txt";
Esto significa que las barras invertidas se tratan literalmente y no como caracteres de escape.
¿Cómo se logra esto en VB.NET?
En caso de duda, mire esta página de comparación: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
VB.NET
''No string literal operator
Dim filename As String = "c:/temp/x.dat"
DO#
// String literal
string filename = @"c:/temp/x.dat";
string filename = "c://temp//x.dat";
Los literales de XML de VB lamentablemente no funcionarán en una página de afeitar .vbhtml. Esperemos que eso cambie en la próxima versión.
Todos los literales de cadena en VB.NET son literales literales literales. Simplemente escribe
Dim str As String = "c:/folder1/file1.txt"
VB.NET no admite caracteres de control en línea. Entonces las barras invertidas siempre se interpretan literalmente.
El único carácter que debe escaparse es la comilla doble, que se escapa al doblarla, como lo hace en C #
Dim s As String = """Ahoy!"" cried the captain." '' "Ahoy!" cried the captain.
VB no trata /
como un carácter de escape de todos modos, por lo que puede simplemente escribir la cadena como un literal normal:
Dim str = "c:/folder1/file1.txt"
Por lo que yo sé, VB no tiene ninguna forma de alcanzar el otro objetivo principal de los literales literales literales, el de permitir múltiples líneas; VbCrLf
que para eso tienes que usar VbCrLf
. (O Environment.NewLine
por supuesto, depende de sus requisitos. A veces desea el separador de línea específico del sistema, a veces desea uno específico según lo requiera un protocolo en particular, etc.)
EDITAR: Las versiones más recientes de VB admiten líneas múltiples en literales de cadenas
VB.NET no reconoce "/" como un carácter de escape. Pero tal vez pueda usar una solución adicional (tenga en cuenta que funciona lentamente que concatenación, por ejemplo):
Dim s As String = Regex.Unescape("c://folder1//file1.txt/nc://folder1//file2.txt/nc://folder1//file3.txt")
En este caso, la cadena "s" contiene tres líneas. El símbolo "/" protege el próximo "/" del método regex Unescape (), es por eso que se repite dos veces cada vez.
"/ n" es un carácter especial de "nueva línea" similar a C #. También puede usar "/ t" (pestaña), y así sucesivamente.
Dim sourceText As String =
<string>
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports Microsoft.Win32
Imports System.Linq
Imports System.Text
Imports Roslyn.Compilers
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Imports Roslyn.Compilers.VisualBasic
Namespace HelloWorld
Module Program
Sub Main(args As String())
Console.WriteLine("Hello, World!")
End Sub
End Module
End Namespace
</string>