visual simple poner macro insertar escribir dobles concatenar como comillas comilla agregar vb.net string character-encoding escaping quotation-marks

vb.net - simple - insertar comillas dobles en sql



Usando comillas dobles a la izquierda en cadenas en VB (3)

Consulte http://msdn.microsoft.com/en-us/library/613dxh46%28v=vs.71%29.aspx

Pruebe esto: StringVar = Replace(StringVar, "“", ChrW(&H8220))

En el siguiente código, el uso de la cadena "“" (es decir, una comilla doble a la izquierda dentro de una cadena) da como resultado un error de compilación en VB.NET:

StringVar = Replace(StringVar, "“", "“")

¿Que está pasando aqui?


Parece como si quisieras reemplazar las comillas rizadas con su código HTML equivalente.

A primera vista, su código es absolutamente correcto. El problema es que VB permite citas rizadas en lugar de citas regulares en el código (porque Unicode es genial, ¿verdad?). Es decir, los siguientes códigos son todos equivalentes:

Dim str = "hello" Dim str = “hello” Dim str = "hello“

Ahora, si desea utilizar una comilla dentro de una cadena, VB no sabe si la comilla debe terminar la cadena o no. En C #, esto se solucionaría evitando las comillas, es decir, en lugar de """ escribiría "/"" . En VB, lo mismo se hace duplicando la comilla, es decir, """" .

De vuelta a tu cita rizada. Lo mismo que para las comillas rectas se aplica de acuerdo con la especificación del lenguaje VB (¶1.6.4). Para escribir una cita en el código, intente lo siguiente:

StringVar = Replace(StringVar, "““", "“")

Desafortunadamente, no puedo probar este código ahora y es posible que el IDE simplemente lo reemplace por comillas rectas. Si ese es el caso, una alternativa es usar Chr o ChrW con el código de carácter de la "comilla doble izquierda":

StringVar = Replace(StringVar, ChrW(&H201C), "“")

O, para la simetría, escrito en decimal (pero prefiero hexadecimal para códigos de caracteres):

StringVar = Replace(StringVar, ChrW(8220), "“")

Algo más: la función Replace probablemente pronto quedará en desuso y no funcionará en todas partes (por ejemplo, Windows Phone 7 ). En su lugar, utilice el método Replace de la clase String :

StringVar = StringVar.Replace(, ChrW(8220), "“")


Parece que estás buscando la función ChrW en el espacio de nombres Microsoft.VisualBasic , que se usa para convertir un código de carácter Unicode en el carácter real.

Si está tratando de reemplazar las comillas rectas en una cadena con comillas, pruebe el siguiente código:

''Declare a string that uses straight quotes Dim origString As String = "This string uses ""quotes"" around a word." ''Create a new string by replacing the straight quotes from the original string ''with left-facing curly quotes Dim newString As String = origString.Replace("""", ChrW(8220)) ''Display the result MessageBox.Show(newString)

O, si está tratando de codificar las comillas rizadas orientadas a la izquierda en una cadena reemplazándolas con una notación alternativa (suponiendo que la que usó en la pregunta es correcta), intente el siguiente código:

''Declare a string that uses left-facing curly quotes Dim origString As String = "This string uses fancy " & ChrW(8220) & _ "quotes" & ChrW(8220) & " around a word." ''Create a new string by replacing the curly quotes with an arbitrary string Dim newString As String = origString.Replace(ChrW(8220), "“") ''Display the result MessageBox.Show(newString)