He estado usando la interpolación de cadenas y me encanta, sin embargo, tengo un problema en el que trato de incluir una barra invertida en mi salida, pero no puedo hacer que funcione.
Lo que quiero es algo como esto ...
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
Quiero que la salida del combo sea
myDomain\myUserName
Lo que obtengo es un error de sintaxis acerca de que \ es un carácter de escape. Si pongo \\, el error snytax desaparece, pero la salida es myDomain \\ myUsername
¿Cómo puedo incluir caracteres de escape en una cadena interpolada?
c#
.net
string-interpolation
Mate
fuente
fuente
$@"{domain}\{userName}"
. Creo que deberías probarlo y aceptarlo. Tuve exactamente el mismo problema, ya que también es el dominio y el nombre de usuario, y su método funciona bien.Respuestas:
Escapar con una barra invertida (
\
) funciona para todos los caracteres excepto para las llaves.Si está intentando escapar de una llave (
{
o}
), debe usar{{
o}}
según https://msdn.microsoft.com/en-us/library/dn961160.aspx .fuente
Puede hacer esto, usando tanto $ @. El orden es importante.
var combo = $@"{domain}\{userName}";
fuente
Eduardo tiene razón. Escapas de los tirantes rizados doblando. Por lo tanto, si desea generar la variable de dominio como {midominio}, deberá hacer lo siguiente:
$"{{{domain}}}";
Además, suponiendo que la fecha actual sea el 1 de septiembre de 2016, hacer esto:
$"The date is {DateTime.Now}";
generaría algo como "La fecha es 2016/09/01 3:04:48 PM" dependiendo de su localización. También puede formatear la fecha haciendo:
$"The date is {DateTime.Now : MMMM dd, yyyy}";
que daría como resultado "La fecha es el 1 de septiembre de 2016". Las cadenas interpoladas son mucho más legibles. Buena respuesta Eduardo.
fuente
$"{domain}\\{user}"
Funciona bien: el escape funciona como de costumbre (excepto al escapar
{
). Al menos en .NET 4.6 y VS 14.0.22823 D14REL.Si no funciona por alguna razón (¿tal vez esté usando una versión anterior del compilador?), También podría intentar ser más explícito:
$"{domain}{@"\"}{user}"
fuente
Hola, la regla para escapar de la barra invertida en una cadena interpolada es duplicar la barra invertida:
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\\{userName}";
pero si también usa la cadena interpolada como cadena literal, entonces no necesita escapar de la barra invertida:
var domain = "mydomain"; var userName = "myUserName"; var combo = $@"{domain}\{userName}";
y obtienes lo mismo:
Para ver un tutorial sobre la cadena interpolada: vea el video cadena interpolada
fuente
Si no lo entendí mal. La solución es realmente simple
var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo);
Comparto la respuesta de birdamongmen y la buena referencia que se proporciona allí. Espero que te sea de ayuda. Mis 5 centavos
fuente
Puedes usar esto -
'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
fuente