Quite las comillas dobles de una cadena en .NET

99

Estoy tratando de hacer coincidir algunos HTML formateados de manera inconsistente y necesito eliminar algunas comillas dobles.

Actual:

<input type="hidden">

La meta:

<input type=hidden>

Esto está mal porque no lo estoy escapando correctamente:

s = s.Replace ("" "," ");

Esto es incorrecto porque no hay un carácter de carácter en blanco (que yo sepa):

s = s.Replace('"', '');

¿Qué es la combinación de sintaxis / caracteres de escape para reemplazar comillas dobles con una cadena vacía?

Incluso Mien
fuente

Respuestas:

212

Creo que su primera línea realmente funcionaría, pero creo que necesita cuatro comillas para una cadena que contenga una sola (al menos en VB):

s = s.Replace("""", "")

para C # tendrías que escapar de las comillas usando una barra invertida:

s = s.Replace("\"", "");
Joey
fuente
1
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
27

No vi que mis pensamientos se repitieran ya, por lo que le sugiero que mire string.Trimen la documentación de Microsoft para C # y puede agregar un carácter para recortar en lugar de simplemente recortar los espacios vacíos:

string withQuotes = "\"hellow\"";
string withOutQotes = withQuotes.Trim('"');

debería resultar en withOutQuotes en "hello"lugar de""hello""

Shane
fuente
26
s = s.Replace("\"", "");

Necesita usar \ para escapar del carácter de comillas dobles en una cadena.

David
fuente
2
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
14

Puede utilizar cualquiera de estos:

s = s.Replace(@"""","");
s = s.Replace("\"","");

... pero me da curiosidad saber por qué querrías hacer eso? Pensé que era una buena práctica mantener cotizados los valores de los atributos.

Fredrik Mörk
fuente
1
Estoy usando HTML Agility Pack para encontrar un determinado enlace, y luego necesito eliminar un valor en ese enlace del texto HTML. El HTML Agility Pack cita los valores de los atributos, pero el HTML original no se cita. (Y todo esto para una prueba.)
Even Mien
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
6
s = s.Replace("\"",string.Empty);
Steve Gilham
fuente
1
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
5

C#: "\"" asís.Replace("\"", "")

vb / vbs / vb.net: ""asís.Replace("""", "")

svinto
fuente
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
3

Debe escapar de las comillas dobles con una barra invertida.

s = s.Replace("\"","");
Jake Pearson
fuente
1
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
1

s = s.Replace (@ "" "", "");

gHeidenreich
fuente
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
1

Esto funcionó para mi

//Sentence has quotes
string nameSentence = "Take my name \"Wesley\" out of quotes";
//Get the index before the quotes`enter code here`
int begin = nameSentence.LastIndexOf("name") + "name".Length;
//Get the index after the quotes
int end = nameSentence.LastIndexOf("out");
//Get the part of the string with its quotes
string name = nameSentence.Substring(begin, end - begin);
//Remove its quotes
string newName = name.Replace("\"", "");
//Replace new name (without quotes) within original sentence
string updatedNameSentence = nameSentence.Replace(name, newName);

//Returns "Take my name Wesley out of quotes"
return updatedNameSentence;
usuario3519062
fuente
1

Si solo desea eliminar las comillas de los extremos de la cadena (no del medio), y existe la posibilidad de que haya espacios en cualquier extremo de la cadena (es decir, analizando un archivo de formato CSV donde hay un espacio después de la comas), entonces necesita llamar a la función Trim dos veces ... por ejemplo:

string myStr = " \"sometext\"";     //(notice the leading space)
myStr = myStr.Trim('"');            //(would leave the first quote: "sometext)
myStr = myStr.Trim().Trim('"');     //(would get what you want: sometext)
TJC
fuente
0
s = s.Replace( """", "" )

Dos comillas una al lado de la otra funcionarán como el carácter "previsto" cuando estén dentro de una cadena.

Miguel
fuente
1
esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena
Aadith Ramia
0

Si desea eliminar un solo carácter, supongo que es más fácil simplemente leer las matrices y omitir ese carácter y devolver la matriz. Lo uso cuando analizo de forma personalizada el json de vcard. ya que es un json malo con identificadores de texto "entre comillas".

Agregue el método siguiente a una clase que contenga sus métodos de extensión.

  public static string Remove(this string text, char character)
  {
      var sb = new StringBuilder();
      foreach (char c in text)
      {
         if (c != character)
             sb.Append(c);
      }
      return sb.ToString();
  }

luego puede usar este método de extensión:

var text= myString.Remove('"');
Walter Vehoeven
fuente