¿Cómo agregar comillas dobles a una cadena que está dentro de una variable?


168

Tengo variables como:

string title = string.empty;

Mi necesidad es que cualquier cadena que se le pase tenga que mostrar el contenido dentro de un div con comillas dobles. Entonces escribí algo como:

...
...
<div>"+ title +@"</div>
...
...

¿Pero cómo agregar las comillas dobles aquí? Para que se muestre como:

"How to add double quotes"

No, no funciona asp.net, c # vs2013, no importa cómo codifique si miras y la fuente de la página & quot; y & # 39; siempre se muestran. Estoy usando `Attributes.Add (... '
djack109

Respuestas:


331

Debe escapar de ellos duplicándolos (literal de cadena literal):

string str = @"""How to add doublequotes""";

O con un literal de cadena normal, escapa de ellos con un \:

string str = "\"How to add doublequotes\"";

¿Y cómo eliminarlo mientras se guarda en la base de datos? Solo quiero eliminar la comilla doble adicional utilizada para escapar y no ambas
Anil Purswani

1
@AnilPurswani - ¿eh? Necesita leer sobre lo que significa escapar.
Finalizado el

cuando se usa string str = @ "" "Cómo agregar comillas dobles" ""; almacena "" Cómo agregar comillas dobles "" en la base de datos ..... y al buscarlo recupera lo mismo ... ahora intenta convertirlo ... bueno, obtuve la respuesta: str.Replace ("\\ \ "", "\" "); ... de todos modos, gracias por su respuesta ...
Anil Purswani

Si quieres que una cadena contenga comillas, escapa de ellas. Eso no tiene nada que ver con almacenarlos en la base de datos; si desea eliminar las comillas antes de almacenarlas en la base de datos, hágalo.
Finalizado el

sí, solo estaba tratando de obtener la solución de stackoverflow.com/questions/26118354/… y llegué a esta pregunta, que parece similar cuando se obtuvieron los datos de la base de datos .....
Anil Purswani

46

¿Entonces esencialmente se pregunta cómo almacenar comillas dobles dentro de una variable de cadena? Dos soluciones para eso:

var string1 = @"""inside quotes""";
var string2 = "\"inside quotes\"";

Para quizás dejar un poco más claro lo que sucede:

var string1 = @"before ""inside"" after";
var string2 = "before \"inside\" after";

14

Si entiendo su pregunta correctamente, tal vez pueda intentar esto:

string title = string.Format("<div>\"{0}\"</div>", "some text");

14

Si tiene que hacer esto a menudo y le gustaría que este sea más limpio en el código, es posible que desee tener un método de extensión para esto.

Este es un código realmente obvio, pero aún así creo que puede ser útil agarrarlo y hacerle ahorrar tiempo.

  /// <summary>
    /// Put a string between double quotes.
    /// </summary>
    /// <param name="value">Value to be put between double quotes ex: foo</param>
    /// <returns>double quoted string ex: "foo"</returns>
    public static string AddDoubleQuotes(this string value)
    {
        return "\"" + value + "\"";
    }

Entonces puede llamar a foo.AddDoubleQuotes () o "foo" .AddDoubleQuotes (), en cada cadena que desee.

Espero que esto ayude.


7

También puede incluir las comillas dobles en comillas simples.

string str = '"' + "How to add doublequotes" + '"';

6

Otra nota:

    string path = @"H:\\MOVIES\\Battel SHIP\\done-battleship-cd1.avi"; 
    string hh = string.Format("\"{0}\"", path);
    Process.Start(@"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe ", hh + " ,--play");

El valor real de hh según lo aprobado será "H: \ MOVIES \ Battel SHIP \ done-battleship-cd1.avi".

Cuando necesite usar dobles literales dobles use: @ "H: \ MOVIES \ Battel SHIP \ done-battleship-cd1.avi"; En lugar de: @ "H: \ MOVIESBattel SHIP \ done-battleship-cd1.avi"; Porque los primeros literales son para el nombre de ruta y luego los segundos literales son para las comillas dobles


2

Podrías usar en &quot;lugar de ". El navegador lo mostrará correctamente.


No, no funciona asp.net, c # vs2013, no importa cómo codifique si miras y la fuente de la página & quot; y & # 39; siempre se muestran. Estoy usando `Attributes.Add (... '
djack109


2

Puedes usar $.

Cadenas interpoladas : se utilizan para construir cadenas. Una cadena interpolada se parece a una cadena de plantilla que contiene expresiones interpoladas. Una cadena interpolada devuelve una cadena que reemplaza las expresiones interpoladas que contiene con sus representaciones de cadena. Esta característica está disponible en C # 6 y versiones posteriores.

string commentor = $"<span class=\"fa fa-plus\" aria-hidden=\"true\"> {variable}</span>";

1

Utilizar cualquiera

& dquo;
<div> & dquo; "+ título + @" & dquo; </div>

o escapar de la cita doble:

\ "
<div> \ "" + título + @ "\" </div>

1

En C # puedes usar:

 string1 = @"Your ""Text"" Here";
 string2 = "Your \"Text\" Here";


0

Ponga una barra invertida (\) antes de las comillas dobles. Eso debería funcionar.


0

en C # si usamos "\" significa que indicará que el siguiente símbolo no es un símbolo incorporado en C # que usará el desarrollador. así que en cadena necesitamos comillas dobles significa que podemos poner el símbolo "\" antes de las comillas dobles.string s = "\"Hi\""


0

"<i class=\"fa fa-check-circle\"></i>"se utiliza con operador ternario con Eval()enlace de datos:

Text = '<%# Eval("bqtStatus").ToString()=="Verified" ? 
       Convert.ToString("<i class=\"fa fa-check-circle\"></i>") : 
       Convert.ToString("<i class=\"fa fa-info-circle\"></i>"

0

Una alternativa indirecta, pero fácil de entender, para agregar comillas al inicio y al final de la cadena:

char quote = '"';

string modifiedString = quote + "Original String" + quote;

0

Si desea agregar comillas dobles en HTML

echo "<p>Congratulations,  &#8220; ". $variable ." &#8221;!</p>";
output -> Congratulations, "Mr Jonh "!

0

Si desea agregar comillas dobles a una cadena que también contiene valores dinámicos. Para lo mismo en lugar de CodeId [i] y CodeName [i] puede poner sus valores dinámicos.

data = "Test ID=" + "\"" + CodeId[i] + "\"" + " Name=" + "\"" + CodeName[i] + "\"" + " Type=\"Test\";
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.