2009-07-24 143 views
60

Estoy tratando de hacer coincidir en algunos HTML formateados de forma inconsistente y necesito quitar algunas comillas dobles.Strip comillas dobles de una cadena en .NET

actual:

<input type="hidden"> 

El objetivo:

<input type=hidden> 

Esto está mal porque no voy a escapar correctamente:

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

Esto es un error porque no hay de caracteres en blanco (que yo sepa):

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

¿Cuál es la sintaxis/escapar combinación de caracteres para la sustitución de las comillas dobles con una cadena vacía?

+2

ha etiquetado este C# y VB.NET. La respuesta depende de cuál sea. Aunque la mayoría de la gente acaba de asumir que es C# (como es habitual por aquí) y la respuesta que ha aceptado es C#. – MarkJ

+0

Me convenciste para cambiar mi respuesta aceptada. –

Respuesta

154

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

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

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

s = s.Replace("\"", ""); 
+18

+1 para leer las etiquetas y responder por ** both ** C# y VB.NET , a diferencia de la mayoría de la gente :) – MarkJ

+0

esto tiene un efecto secundario si hay más citas incrustadas dentro de la cadena – Aadith

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

Debe usar el signo \ para escapar del carácter de comillas dobles en una cadena.

+0

esto tiene un efecto secundario si hay más citas incrustadas dentro de la cadena – Aadith

3

Tiene que escapar la comilla doble con una barra diagonal inversa.

s = s.Replace("\"",""); 
+0

esto tiene un efecto secundario si hay más citas incrustadas dentro de la cadena – Aadith

5
s = s.Replace("\"",string.Empty); 
+0

esto tiene un efecto secundario si hay más citas incrustadas dentro de la cadena – Aadith

12

puede utilizar cualquiera de estos:

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

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

+0

Al escuchar esta pregunta ... Me gustaría saber como bien. – JAB

+1

Uso HTML Agility Pack para buscar un determinado enlace, y luego necesito eliminar un valor en ese enlace del texto HTML. HTML Agility Pack cita los valores de los atributos, pero el HTML original no está citado. (Y todo esto para una prueba). –

+0

esto tiene un efecto secundario si hay más citas incrustadas dentro de la cadena – Aadith

3

C#: "\"", por lo tanto s.Replace("\"", "")

VB/VBS/vb.net: "" por lo tanto s.Replace("""", "")

+0

+1 para leer las etiquetas y responder por ** ambos ** C# y VB.NET, a diferencia de la mayoría de las personas :) – MarkJ

+0

esto tiene un efecto secundario si hay más comillas incrustadas dentro de la cadena – Aadith

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

dos citas lado de la otra función de la voluntad como el "carácter previsto cuando dentro de una cadena.

+0

esto tiene un efecto secundario si hay más comillas insertadas dentro de la cadena – Aadith

1

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

+0

esto tiene un efecto secundario si hay más comillas insertadas dentro de la cadena – Aadith

1

Esto funcionó para mí

//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; 
8

No vi mis pensamientos repetidos ya, así que voy a sugerir que nos fijamos en string.Trim en la documentación de Microsoft para C# se puede añadir un carácter a ser recortadas en lugar de simplemente recortar los espacios vacíos:

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

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

0

Si solo quiere quitar las comillas de los extremos de la cadena (no del medio), y existe la posibilidad de que haya espacios en cada extremo de la cadena (es decir, analizar un archivo de formato CSV donde hay un espacio después de la coma), entonces usted 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) 
Cuestiones relacionadas