2010-03-12 7 views
4

Je veux utiliser \ dans une chaîne, commeComment utiliser dans une chaîne en C#

string str="abc\xyz"; 

Mais cela me donne une erreur.

J'ai aussi essayé

string str="abc\\xyz"; 

Mais encore isnt travailler. Quelqu'un peut-il m'aider?

+0

(Je suis d'accord avec toutes les réponses, mais) quel est le résultat du deuxième essai (qui devrait fonctionner) et qu'attendiez-vous? – Timores

+0

Effectivement un duplicata - http://stackoverflow.com/questions/1057926/when-to-use-in-c – ChrisF

+0

Cela fonctionnera certainement - poster un extrait si vous avez encore des problèmes - peut-être qu'il est ailleurs que ce particulier ligne. – itsmatt

Répondre

2
public class Program 
{ 
    static void Main(string[] args) 
    { 
     string str = "abc\\xyz"; 
     Console.WriteLine(str); 
    } 
} 

Cela fonctionne très bien. Il imprime abc\xyz.

2

Vous pouvez le faire comme ça

string str = @"abc\xyz"; 
13

Vous pouvez échapper au caractère, comme ceci:

string str="abc\\xyz"; 

ou utiliser une chaîne mot pour mot littéral comme ceci:

string [email protected]"abc\xyz"; 

Donc, votre deuxième exemple devrait fonctionner. Pour plus d'informations, voir here.

+0

FYI, ce dernier s'appelle un 'verbatim chaîne littérale'. –

+0

Merci, je vais mettre à jour. –

4

Eh bien, ce dernier ("abc\\xyz") entraînera certainement une barre oblique inverse dans la chaîne - ou vous pouvez utiliser un littéral chaîne verbatim :

string str = @"abc\xyz"; 

Notez que si vous utilisez le débogueur pour regarder votre cordes, il va souvent (toujours?) "les échapper" pour vous, donc vous verriez "abc\\xyz". Cela peut causer beaucoup de confusion. Examinez les caractères individuellement ou imprimez la chaîne sur la console.

Vous n'avez pas dit en quoi façon il "ne fonctionne pas" - pourriez-vous donner plus de détails? Si ce n'est que la sortie du débogueur, alors ce qui précède peut être tout ce que vous cherchez - mais sinon, vous devriez nous dire ce que vous voyez ou ce que vous attendiez de voir.

Jetez un oeil à mon article about strings pour plus d'informations sur les chaînes en général, échappant, le débogueur etc.

+0

Oui. Pendant le débogage, je vois abc \\ xyz quand j'ai utilisé @ "abc \ xyz". –

+0

Et pour cette raison, je suis incapable de faire quoi que ce soit d'autre dans mon code. –

+1

@Brigadier: Mais ce sont les données correctes. Pourquoi le débogueur vous montre-t-il les bonnes données mais en tant que chaîne littérale verbatim, vous rendant "incapable de faire quoi que ce soit d'autre dans [votre] code"? Qu'est-ce qui * vous empêche de continuer? Quels résultats inattendus obtenez-vous en dehors de voir la chaîne au format littéral littéral verbatim? –

5
string str="abc\\xyz"; 

Normalement, cela devrait fonctionner. Une alternative est:

string str = @"abc\xyz"; 
1

Vous pouvez le faire:

string str = @"abc\xyz"; 

Cela dit dit que la barre oblique est importante et non pas un caractère d'échappement.

1

Vous devrez préfixer la chaîne avec le symbole '@' pour arrêter le compilateur en essayant de le traiter comme une séquence d'échappement. Donc, string str = @"abc\xyz"; devrait fonctionner.

Questions connexes