Eliminarea ghilimelelor duble dintr-un șir de caractere în .NET (Programare, C#,.Net, Vb.Net)

Chiar și Mien a intrebat.

Încerc să mă potrivesc pe un HTML formatat inconsistent și trebuie să scot câteva ghilimele duble.

Curent:

<input type="hidden">

Scopul:

<input type=hidden>

Acest lucru este greșit pentru că nu scap de el în mod corespunzător:

s = s.Replace(„””,”””);

Acest lucru este greșit pentru că nu există un caracter de spațiu gol (după știința mea):

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

Care este combinația de sintaxă / caracter de evadare pentru înlocuirea ghilimelelor duble cu un șir gol?

12 răspunsuri
Joey

Cred că prima ta linie ar funcționa de fapt, dar cred că ai nevoie de patru ghilimele pentru un șir care conține unul singur (cel puțin în VB):

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

pentru C# ar trebui să evadezi ghilimelele folosind o backslash:

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

Comentarii

  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în șir –  > Por Aadith Ramia.
Shane

Nu am văzut că gândurile mele au fost repetate deja, așa că vă voi sugera să vă uitați la string.Trim în documentația Microsoft pentru C# puteți adăuga un caracter care să fie tăiat în loc să tăiați pur și simplu spațiile goale:

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

ar trebui să aibă ca rezultat faptul că withOutQuotes este "hello" în loc de ""hello""

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

Trebuie să folosiți pentru a scăpa caracterul de ghilimele duble într-un șir de caractere.

Comentarii

  • acest lucru are un efect secundar în cazul în care există mai multe ghilimele încorporate în șir –  > Por Aadith Ramia.
Fredrik Mörk

Puteți folosi oricare dintre acestea:

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

…dar devin curios de ce ai vrea să faci asta? Credeam că este o bună practică să păstrezi valorile atributelor între ghilimele?

Comentarii

  • Folosesc pachetul HTML Agility Pack pentru a găsi un anumit link, iar apoi trebuie să elimin o valoare din acel link din textul HTML. Pachetul HTML Agility Pack citează valorile atributului, dar HTML-ul original nu este citat. (Și toate astea pentru un singur test.) –  > Por Chiar și Mien.
  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în șirul de caractere –  > Por Aadith Ramia.
Steve Gilham
s = s.Replace("
",string.Empty);

Comentarii

  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în șir –  > Por Aadith Ramia.
svinto

c#: "
"
, , astfel s.Replace("
", "")

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

Comentarii

  • acest lucru are un efect secundar în cazul în care există mai multe ghilimele încorporate în șirul –  > Por Aadith Ramia.
Jake Pearson

Trebuie să scăpați ghilimelele duble cu o backslash.

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

Comentarii

  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în interiorul șirului –  > Por Aadith Ramia.
gHeidenreich

s = s.Replace(@””””, „”);

Comentarii

  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în șirul de caractere –  > Por Aadith Ramia.
user3519062

Acest lucru a funcționat pentru mine

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

TJC

Dacă doriți să eliminați doar ghilimelele de la capetele șirului (nu de la mijloc) și există posibilitatea să existe spații la oricare dintre capetele șirului (de exemplu, analizarea unui fișier în format CSV în care există un spațiu după virgulă), atunci trebuie să apelați funcția Trim de două ori…de exemplu:

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)

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

Două ghilimele unul lângă altul vor funcționa ca și caracterul ” ” atunci când sunt în interiorul unui șir de caractere.

Comentarii

  • acest lucru are un efect secundar dacă există mai multe ghilimele încorporate în interiorul șirului –  > Por Aadith Ramia.
Walter Vehoeven

dacă doriți să eliminați un singur caracter, cred că este mai ușor să citiți pur și simplu array-urile, să săriți peste acel caracter și să returnați array-ul. O folosesc atunci când analizez în mod personalizat json-ul lui vcard. deoarece este un json rău cu identificatori de text „citați”.

Adăugați metoda de mai jos la o clasă care conține metodele de extensie.

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

puteți utiliza apoi această metodă de extensie:

var text= myString.Remove('"');

Tags:, ,