Pregunta Secuencia de escape no reconocida para cadena de ruta que contiene barras invertidas


El siguiente código genera un error de compilación sobre una "secuencia de escape no reconocida" para cada barra invertida:

string foo = "D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

¿Supongo que necesito escapar de la barra invertida? ¿Cómo puedo hacer eso?


74
2017-08-19 22:01


origen


Respuestas:


Puedes usar una barra diagonal inversa doble cada vez

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

o usa el símbolo @

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

184
2017-08-19 22:02



Prueba esto:

string foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

El problema es que en una cadena, una \ es un personaje de escape. Al usar el @ Firma que le dices al compilador que ignore los caracteres de escape.

También puede salir adelante escapando del \:

string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

23
2017-08-19 22:02



var foo = @"D:\Projects\Some\Kind\Of\Pathproblem\wuhoo.xml";

11
2017-08-19 22:01



Si su cadena es una ruta de archivo, como en su ejemplo, también puede usar rutas de archivos de estilo Unix:

string foo = "D:/Projects/Some/Kind/Of/Pathproblem/wuhoo.xml";

Pero las otras respuestas tienen las soluciones más generales para el escape de cadenas en C #.


8
2017-08-19 22:07



string foo = "D:\\Projects\\Some\\Kind\\Of\\Pathproblem\\wuhoo.xml";

Esto funcionará, o los ejemplos anteriores también lo harán. @ "..." significa tratar todo entre las comillas literalmente, para que pueda hacer

@"Hello
world"

Para incluir una nueva línea literal. Soy más viejo y prefiero escapar de "\" con "\\"


5
2017-08-19 22:04