Elimina le virgolette doppie da una stringa in .NET


99

Sto cercando di trovare una corrispondenza su un HTML formattato in modo incoerente e ho bisogno di rimuovere alcune virgolette doppie.

Attuale:

<input type="hidden">

L'obiettivo. il gol:

<input type=hidden>

Questo è sbagliato perché non lo sto scappando correttamente:

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

Questo è sbagliato perché non ci sono caratteri vuoti (per quanto ne so):

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

Qual è la combinazione di sintassi / caratteri di escape per sostituire le virgolette doppie con una stringa vuota?

Risposte:


212

Penso che la tua prima riga funzionerebbe effettivamente, ma penso che tu abbia bisogno di quattro virgolette per una stringa che ne contiene una sola (almeno in VB):

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

per C # dovresti sfuggire alle virgolette usando una barra rovesciata:

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

1
questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

27

Non ho già visto i miei pensieri ripetuti, quindi ti suggerisco di guardare string.Trimnella documentazione Microsoft per C # puoi aggiungere un carattere da tagliare invece di tagliare semplicemente gli spazi vuoti:

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

dovrebbe comportare che withOutQuotes sia "hello"invece di""hello""


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

È necessario utilizzare \ per eseguire l'escape del carattere virgolette doppie in una stringa.


2
questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

14

Puoi usare uno di questi:

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

... ma mi incuriosisce il motivo per cui vorresti farlo? Ho pensato che fosse una buona pratica mantenere i valori degli attributi citati?


1
Sto utilizzando HTML Agility Pack per trovare un determinato collegamento, quindi devo rimuovere un valore in quel collegamento dal testo HTML. L'HTML Agility Pack cita i valori degli attributi, ma l'HTML originale non viene citato. (E tutto questo per una prova.)
Anche Mien

questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

6
s = s.Replace("\"",string.Empty);

1
questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

5

c #:, "\""quindis.Replace("\"", "")

vb / vbs / vb.net: ""quindis.Replace("""", "")


questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

3

Devi evitare le virgolette doppie con una barra rovesciata.

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

1
questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia


1

Questo ha funzionato per me

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

1

Se vuoi solo rimuovere le virgolette dalle estremità della stringa (non dal centro), e c'è la possibilità che ci possano essere spazi alle due estremità della stringa (cioè analizzare un file in formato CSV dove c'è uno spazio dopo il virgole), quindi è necessario chiamare la funzione Trim due volte ... ad esempio:

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)

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

Due virgolette una accanto all'altra funzioneranno come il carattere "previsto all'interno di una stringa.


1
questo ha un effetto collaterale se ci sono più virgolette incorporate nella stringa
Aadith Ramia

0

se desideri rimuovere un singolo carattere, immagino che sia più semplice leggere semplicemente gli array e saltare quel carattere e restituire l'array. Lo uso durante l'analisi personalizzata del json di vcard. in quanto è cattivo json con identificatori di testo "quotati".

Aggiungi il metodo seguente a una classe contenente i tuoi metodi di estensione.

  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();
  }

puoi quindi utilizzare questo metodo di estensione:

var text= myString.Remove('"');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.