C # String.Remplacer les guillemets doubles et les littéraux
Je suis assez novice en c# donc, c'est pourquoi je vous pose cette question ici.
Je suis la consommation d'un service web qui renvoie une longue chaîne de valeurs XML. Parce que c'est une chaîne de tous les attributs qui ont échappé guillemets
string xmlSample = "<root><item att1=\"value\" att2=\"value2\" /></root>"
Voici mon problème. Je veux faire une simple chaîne de caractères.remplacer. Si je travaille en PHP je venais de courir strip_slashes().
Cependant, je suis en C# et je ne peux pas pour la vie de me comprendre. Je ne peux pas écrire mon expression pour remplacer les guillemets doubles ( " ), car il met fin à la chaîne. Si je m'échappe, puis il a des résultats incorrects. Ce que je fais mal?
string search = "\\\"";
string replace = "\"";
Regex rgx = new Regex(search);
string strip = rgx.Replace(xmlSample, replace);
//Actual Result <root><item att1=value att2=value2 /></root>
//Desired Result <root><item att1="value" att2="value2" /></root>
MizardX: Pour inclure un guillemet dans une chaîne brute vous avez besoin de le doubler.
C'est important d'informations, en essayant cette approche maintenant...Pas de chance, il n'y a
Il se passe quelque chose ici avec les guillemets. Les concepts sont tous suggérant sont solides, MAIS la question ici est de traiter avec les guillemets doubles et il semble que je vais avoir besoin de faire quelques recherches supplémentaires afin de résoudre ce problème. Si quelqu'un vient avec quelque chose merci de poster une réponse.
string newC = xmlSample.Replace("\\\"", "\"");
//Result <root><item att=\"value\" att2=\"value2\" /></root>
string newC = xmlSample.Replace("\"", "'");
//Result newC "<root><item att='value' att2='value2' /></root>"
source d'informationauteur discorax
Vous devez vous connecter pour publier un commentaire.
la déclaration suivante en C#
va stocker la valeur
alors que
ont la valeur de
pour le deuxième cas, vous avez besoin pour remplacer la barre oblique () par la chaîne vide comme suit
le résultat sera
P. S.
\
) est d'échappement par défaut de caractère en C#Il n'y a pas de raison d'utiliser une expression Régulière à tous... c'est beaucoup plus lourd que ce que vous avez besoin.
À la fois la chaîne et la regex utilise
\
pour s'échapper. La regex va voir le caractère\
suivie par"
et pense que c'est un littéral de s'échapper. Essayez ceci:Vous pouvez également utiliser des chaînes de caractères (aussi connu comme veratim chaînes de caractères en C#. Ils sont préfixés avec
@
et toutes les barres obliques sont traités comme des caractères normaux. Pour inclure un guillemet dans une chaîne brute, vous devez double.Si vous obtenez une chaîne de caractères XML pourquoi ne pas utiliser le XML à la place des chaînes?
vous aurez accès à tous les éléments et attributs, et il sera beaucoup plus facile et extrêmement rapide si vous utilisez le System.Xml espace de noms
dans votre exemple, vous obtenez cette chaîne:
Tout ce que vous devez faire est de convertir cette chaîne en un Document XML et de l'utiliser, comme:
dans ASP.NET ce sera la sortie de la Literal1 quelque chose comme:
une fois que vous avez un élément dans une XmlElement, il est très facile de rechercher et d'obtenir les valeurs et les noms de ce qui est dans cet élément.
lui donner un essai, je l'utilise beaucoup lors de la récupération des WebServices réponses et quand je stocker quelque chose dans un fichier XML en tant que paramètres pour une petite application par exemple.