una interpolacion extraer ejemplos caracteres cadenas cadena c# .net string-interpolation

interpolacion - string c# ejemplos



¿Cómo usar caracteres de escape con interpolación de cadenas en C#6? (6)

He estado usando la interpolación de cadenas y me encanta, sin embargo, tengo un problema en el que trato de incluir una barra diagonal inversa 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 de snytax desaparece, pero el resultado es myDomain // myUsername

¿Cómo puedo incluir caracteres escapados en una cadena interpolada?


Eduardo tiene razón. Te escapas de las llaves al doblarte. Por lo tanto, si desea generar la variable de dominio como {midominio}, debe hacer lo siguiente:

var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}//{{{userName}}}"; Console.WriteLine(combo);

Además, suponiendo que la fecha actual sea el 1 de septiembre de 2016, haciendo esto:

$"{{{domain}}}";

saldría algo así 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}";

que generaría "La fecha es el 1 de septiembre de 2016". Las cadenas interpoladas son mucho más legibles. Buena respuesta Eduardo.


Escapar con una barra invertida ( / ) funciona para todos los caracteres excepto una llave.

Si está intentando escapar de una llave ( { o } ), debe usar {{ o }} según https://msdn.microsoft.com/en-us/library/dn961160.aspx .

... Todas las apariciones de llaves dobles ("{{" y "}}") se convierten en una sola llave.


Hola, la regla para escapar de la barra diagonal inversa en una cadena interpolada es duplicar la barra diagonal inversa:

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 diagonal inversa:

var domain = "mydomain"; var userName = "myUserName"; var combo = $@"{domain}/{userName}";

y obtienes lo mismo:

Para un tutorial sobre la cadena interpolada: vea la cadena de video interpolada


Puede hacer esto, utilizando los $ @. El orden es importante.

var combo = $@"{domain}/{userName}";


Si no lo entendí mal. La solución es muy simple.

$"The date is {DateTime.Now : MMMM dd, yyyy}";

Comparto la respuesta birdamongmen también buena referencia proporcionada allí. Espero que te sea útil. Mis 5 centavos


$"{domain}//{user}"

Funciona bien: escapar funciona como de costumbre (excepto cuando se escapa { ). Al menos en .NET 4.6 y VS 14.0.22823 D14REL.

Si no funciona por alguna razón (¿tal vez está utilizando una versión anterior del compilador?), También podría intentar ser más explícito:

$"{domain}{@"/"}{user}"