web-dev-qa-db-fra.com

Supprimer les guillemets d'une chaîne dans .NET

J'essaie de faire correspondre certains codes HTML au format incohérent et je dois supprimer des guillemets.

Courant:

<input type="hidden">

Le but:

<input type=hidden>

C'est faux parce que je n'y échappe pas correctement:

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

C'est faux car il n'y a pas de caractère vide (à ma connaissance):

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

Quelle est la combinaison syntaxe/caractère d'échappement pour remplacer les guillemets doubles par une chaîne vide?

83
Even Mien

Je pense que votre première ligne fonctionnerait réellement, mais je pense que vous avez besoin de quatre guillemets pour une chaîne contenant un seul (au moins dans VB):

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

pour C #, vous devez échapper le guillemet à l'aide d'une barre oblique inverse:

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

Vous devez utiliser le\pour échapper au caractère de citation double dans une chaîne.

25
David

Je n'ai pas déjà vu mes pensées se répéter, alors je vais vous suggérer de regarder string.Trim dans la documentation Microsoft pour C #, vous pouvez ajouter un caractère à couper au lieu de simplement couper les espaces vides:

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

devrait aboutir à withOutQuotes être "hello" au lieu de ""hello""

15
Shane

Vous pouvez utiliser l'un de ces types:

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

... mais je suis curieux de savoir pourquoi vous voudriez faire cela? Je pensais que c'était une bonne pratique de garder les valeurs d'attribut citées?

14
Fredrik Mörk
s = s.Replace("\"",string.Empty);
6
Steve Gilham

c #: "\"", donc s.Replace("\"", "")

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

5
svinto

Vous devez échapper à la double citation avec une barre oblique inverse.

s = s.Replace("\"","");
3
Jake Pearson

s = remplacer (@ "" "", "");

1
gHeidenreich

Cela a fonctionné pour moi

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

Si vous souhaitez uniquement effacer les guillemets aux extrémités de la chaîne (et non au milieu), il est possible qu'il y ait des espaces à chaque extrémité de la chaîne virgule), vous devez appeler la fonction Trim deux fois ... par exemple:

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)
1
TJC
s = s.Replace( """", "" )

Deux guillemets juxtaposés fonctionneront comme le caractère "prévu" dans une chaîne.

0
Mike