J'utilise l'interpolation de chaînes et j'adore ça, mais j'ai un problème où j'essaie d'inclure une barre oblique inverse dans ma sortie, mais je ne parviens pas à le faire fonctionner.
Ce que je veux, c'est quelque chose comme ça.
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Je veux que la sortie du combo soit
myDomain\myUserName
Ce que j'obtiens, c'est une erreur de syntaxe concernant le \ étant un caractère d'échappement. Si je mets \\ alors l'erreur snytax a disparu, mais la sortie est myDomain \\ myUsername
Comment puis-je inclure des caractères échappés dans une chaîne interpolée?
$@"{domain}\{userName}"
. Je pense que vous devriez l'essayer et l'accepter. J'ai eu exactement le même problème, car il s'agit également du domaine et du nom d'utilisateur, et sa méthode fonctionne bien.Réponses:
L'échappement avec une barre oblique inverse (
\
) fonctionne pour tous les caractères à l'exception d'une accolade.Si vous essayez d'échapper à une accolade (
{
ou}
), vous devez utiliser{{
ou}}
par https://msdn.microsoft.com/en-us/library/dn961160.aspx .la source
Vous pouvez le faire, en utilisant à la fois $ @. L'ordre est important.
var combo = $@"{domain}\{userName}";
la source
Eduardo a raison. Vous échappez aux accolades en doublant. Par conséquent, si vous souhaitez afficher la variable de domaine sous la forme {mydomain}, vous devez faire:
$"{{{domain}}}";
En outre, en supposant que la date actuelle est le 1er septembre 2016, procédez comme suit:
$"The date is {DateTime.Now}";
affichera quelque chose comme "La date est le 01/09/2016 3:04:48 PM" en fonction de votre localisation. Vous pouvez également formater la date en faisant:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
qui produirait "La date est le 1er septembre 2016". Les chaînes interpolées sont beaucoup plus lisibles. Bonne réponse Eduardo.
la source
$"{domain}\\{user}"
Fonctionne bien - l'échappement fonctionne comme d'habitude (sauf lors de l'échappement
{
). Au moins sur .NET 4.6 et VS 14.0.22823 D14REL.Si cela ne fonctionne pas pour une raison quelconque (peut-être que vous utilisez une ancienne version du compilateur?), Vous pouvez également essayer d'être plus explicite:
$"{domain}{@"\"}{user}"
la source
Salut la règle pour échapper la barre oblique inverse dans la chaîne interpolée est de dupliquer la barre oblique inverse:
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\\{userName}";
mais si vous utilisez également la chaîne interpolée comme chaîne textuelle, vous n'avez pas besoin d'échapper à la barre oblique inverse:
var domain = "mydomain"; var userName = "myUserName"; var combo = $@"{domain}\{userName}";
et vous obtenez la même chose:
Pour un didacticiel sur la chaîne interpolée: voir la chaîne interpolée vidéo
la source
Si je n'ai pas mal compris. La solution est vraiment simple
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
Je partage la réponse birdamongmen ainsi que la bonne référence fournie ici. J'espère que cela vous sera utile. Mes 5 cents
la source
Vous pouvez utiliser ceci -
'First, declare the curley braces as chars Dim LeftBrace As Char = "{" Dim RightBrace As Char = "}" 'Then in your string, use like this- Dim myStr As String = $"This is a {LeftBrace}String{RightBrace}" 'Now, the output will be ' This is a {string}code here
la source