2010-08-20 5 views
3

J'ai chaîne.guillemets chaîne remplacer avec vide dans C#

There are no items to show in this view of the "Personal Documents" 

puis attribuez-lui à une variable chaîne str

string str ="There are no items to show in this view 
of the \"Personal Documents\" library" 

planification Maintenant, pour remplacer "\" et de le rendre à chaîne réelle à str objet. J'ai essayé ci-dessous, mais il n'a pas travaillé

str = str.Replace(@"\",string.Empty); 

Je veux valeur str doit être

string str ="There are no items to show in this view 
of the "Personal Documents" library" 

Je dois trouver cette chaîne dans une autre chaîne. En cherchant dans cette chaîne. Je n'ai pas pu trouver parce que str contient "\".

+10

Vous vous rendez compte que les '' \\ caractères ne sont pas en fait une partie de la chaîne, mais seulement des caractères d'échappement pour gérer les guillemets? –

Répondre

3

Si je comprends bien votre question, vous voulez remplacer le \" de la chaîne constante avec ". Ce n'est pas nécessaire, c'est fait par le compilateur pour vous.

La raison pour laquelle vous devez mettre une (séquence d'échappement) \ avant la " est de dire que le compilateur que vous souhaitez inclure le " dans la chaîne, ne pas mettre fin à la chaîne constante.

Lorsqu'il est stocké en mémoire, le caractère d'échappement est déjà supprimé et lorsque la chaîne est utilisée (par exemple, imprimé sur l'écran), il n'est pas représenté.

E.g. la ligne:

Console.WriteLine("A string with a \" and a \\\" too."); 

seront imprimées:

A string with a " and a \" too. 
2
string str ="There are no items to show in this view of the \"Personal Documents\" library"; 

cela fonctionne très bien.

lancez une application de console et écrivez str pour consoler avec Console.Write comme un coup de pouce de confiance.

13

Pour exprimer la chaîne

 
There are no items to show in this view of the "Personal Documents" 

en C#, vous devez échapper au caractère ", parce que le " est utilisé en C# pour entourer les chaînes littérales.

Il y a deux options:

  • littéraux chaîne régulière

    string str = "There are no items to show in this view of the \"Personal Documents\""; 
                      ↑     ↑ 
    
  • et chaînes littérales in extenso

    string str = @"There are no items to show in this view of the ""Personal Documents"""; 
          ↑            ↑     ↑ 
    

Notez que dans les deux cas, le " caractères sont échappés.

Dans les deux cas, la variable str contient la même chaîne.Par exemple,

Console.WriteLine(str); 

impressions

 
There are no items to show in this view of the "Personal Documents" 

Voir aussi: Strings (MSDN)


EDIT: Si vous avez la chaîne

 
There are no items to show in this view of the "Personal Documents" 

et que vous voulez transformer en en

 
There are no items to show in this view of the Personal Documents 

vous pouvez utiliser la String.Replace Method comme ceci:

string str = "There are no items to show in this view of the \"Personal Documents\""; 

string result = str.Replace("\"", ""); 

"\"" désigne la chaîne qui se compose du caractère unique " (qui, encore une fois, est échappé dans cette régulière chaîne littérale) et "" est la chaîne vide.

0

Essayez:

string str = @"There are no items to show in this view of the ""Personal Documents"" library" 
+0

dtb me battre pour = = – AndHeCodedIt

+1

Le code ci-dessus n'est pas correct. Le compilateur retournera une erreur. Les caractères de guillemet doivent toujours être échappés avec un guillemet additionnel même en utilisant un littéral de chaîne verbatim (c'est-à-dire en préfixant la chaîne citée avec le caractère @). –

+0

Je l'ai remarqué et je l'ai corrigé presque immédiatement après avoir posté ma réponse. – AndHeCodedIt

Questions connexes