Comment puis-je ajouter \ symbole de fin de chaîne en C#
S'il vous plaît pardonnez-moi une question de débutant 🙂
string S="abc";
S+="\";
de ne pas compiler.
string S="abc";
S+="\\";
fera S="abc\\"
Comment puis-je faire S="abc\" ?
utiliser \u005c au lieu de \ et de le vérifier..
Votre deuxième exemple est correct. Vous pouvez voir S="abc\\" dans une fenêtre d'observation, mais c'est juste l'IDE de faire le malin et échapper au caractère de la chaîne (de la même manière si vous avez eu un retour à la ligne de caractère dans la chaîne, la montre la fenêtre du spectacle "foo\nbar")
vous devriez faire une réponse.
Votre deuxième exemple est correct. Vous pouvez voir S="abc\\" dans une fenêtre d'observation, mais c'est juste l'IDE de faire le malin et échapper au caractère de la chaîne (de la même manière si vous avez eu un retour à la ligne de caractère dans la chaîne, la montre la fenêtre du spectacle "foo\nbar")
vous devriez faire une réponse.
OriginalL'auteur RRM | 2013-02-15
Vous devez vous connecter pour publier un commentaire.
Votre deuxième morceau de code est ce que vous voulez (ou un mot à mot littéral de chaîne
@"\"
comme d'autres l'ont suggéré), et il n'ajoute qu'une seule barre oblique inversée de l'imprimer à la console et vous verrez que.Ces deux morceaux de code:
et
sont exactement équivalent. Dans les deux cas, une seule barre oblique inverse est ajouté1.
Je soupçonne que vous êtes confus par le débogueur de vue, qui s'échappe des barres obliques inverses (et quelques autres caractères). Vous pouvez valider le fait que même avec le débogueur en regardant
S.Length
, vous allez voir, c'est 4 plutôt qu'un 5.1 Notez que cela ne change pas les données dans la chaîne existante, mais il définit la valeur de
S
de se référer à un nouveau chaîne qui se compose de l'original avec une barre oblique inverse sur la fin. Les objets String .NET sont immuables, mais c'est un tout autre sujet...OriginalL'auteur Jon Skeet
Essayez ceci:
@
= mot à mot littéral de chaînehttp://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx
http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx
Convenu que L'OP est qu'ils sont incapables d'échapper le caractère barre oblique inverse. Leur deuxième exemple est correct, mais le débogueur visual studio affiche la barre oblique est toujours présent dans la chaîne (quand elle n'est pas).
OriginalL'auteur jerone
Doit et va se traduire par un
abc\
.Ce que vous assistons est la façon dont le débogueur/intellisense visualise la chaîne pour vous.
Essayez d'imprimer votre chaîne à la console ou l'afficher dans un textbox.
OriginalL'auteur hometoast
Vous avez déjà la solution. La raison pour laquelle il apparaît comme
abc\\
tandis que le débogage est parce que VS aurez barres obliques inverses, imprimer la valeur deS
à une fenêtre de console et vous verrezabc\
.Vous pouvez ajouter un
@
le début de la chaîne de caractères littérale, par exempleQui permettront de réaliser la même chose.
S+="\\";
- donner juste une autre façon d'atteindre le même résultat n'a pas vraiment d'aider les OP, de mon point de vue.Édité avec un peu plus d'explications.
OriginalL'auteur DGibbs
Votre deuxième exemple est parfaitement bien
Visual studio affiche la chaîne échappé, c'est pourquoi vous voyez deux barres obliques dans la chaîne de résultat. Si vous ne souhaitez pas utiliser échapper à déclarer chaîne comme celle-ci
Ce n'est pas la compilation, car le compilateur s'attend à un caractère après l'évasion symbole
OriginalL'auteur Anri
Vous pouvez échapper à la barre oblique inverse avec le caractère@:
Mais cela permet d'avoir exactement ce que vous avez écrit dans votre deuxième exemple. La confusion sur ce qui est lié au fait que le débogueur Visual Studio continue d'échapper à ces caractères, même si la chaîne source ne contiendra qu'une seule barre oblique inverse.
OriginalL'auteur RainbowFish
Vous verrez votre chaîne n'est pas mal du tout.
La barre oblique inverse (
\
) est un caractère d'échappement, et vous permet d'obtenir des caractères spéciaux que vous ne serait pas normalement être en mesure d'insérer dans une chaîne de caractères, tels que"\r\n"
, ce qui représente uneNewLine
caractère, ou"\""
qui vous donne essentiellement une"
caractère.Afin d'obtenir le
\
caractère, vous devez d'entrée"\\"
qui est exactement ce que vous faites et ce que vous voulez.En utilisant le mot à mot (
@
) remplace toutes les occurrences de\
en\\
, donc@"\" == "\\"
. Ceci est habituellement utilisé pour les chemins et les regexes, où littérale\
sont nécessaires, et en grand nombre. En disant@"C:\MyDirectory\MyFile"
est plus à l'aise que"C:\\MyDirectory\\MyFile"
après tout.OriginalL'auteur Nolonar
Essayer cette
J'ai essayé dans mon exemple et de son travail.
Je parie que vous n'avez pas. Vous n'avez pas déclaré une variable
s
.en vous répondez u hvnt déclarer S puis votre code d'aussi mauvais.
Le code d'origine contenait déjà
S
- j'étais clairement en fournissant une alternative deuxième ligne. Votre code redéclaréeS
, mais ne pas faire n'importe quoi avecs
. Votre réponse n'est pas réellement aider les OP à tous, car il aura exactement le même résultat que l'origine de la deuxième partie du code, qui était déjà l'ajout de la barre oblique inverse correctement.OriginalL'auteur Utkarsh