metodos interpolacion cadenas before c# string

c# - interpolacion - Usando el literal ''@'' con una variable de cadena



string methods c# (6)

Tengo una clase de ayuda extrayendo una cadena de un archivo XML. Esa cadena es una ruta de archivo (por lo que tiene barras invertidas en ella). Necesito usar esa cadena tal como es ... ¿Cómo puedo usarla como lo haría con el comando literal?

En lugar de esto:

string filePath = @"C:/somepath/file.txt";

Quiero hacer esto:

string filePath = @helper.getFilePath(); //getFilePath returns a string

Esta no es la forma en que realmente lo estoy usando; es solo para aclarar un poco lo que quiero decir. ¿Hay algún tipo de .ToLiteral () o algo así?


El @ "" simplemente hace que sea más fácil escribir literales de cadena.

cadena (Referencia de C #, MSDN)

Los literales de cadena literal comienzan con @ y también se incluyen entre comillas dobles. Por ejemplo:

@"good morning" // a string literal

La ventaja de las cadenas verbatim es que las secuencias de escape no se procesan, lo que hace que sea más fácil escribir, por ejemplo, un nombre de archivo completo:

@"c:/Docs/Source/a.txt" // rather than "c://Docs//Source//a.txt"

Un lugar donde lo he usado está en un patrón de expresiones regulares:

string pattern = @"/b[DdFf][0-9]+/b";

Si tiene una cadena en una variable, no necesita hacer un "literal", ya que si está bien formada, ya tiene los contenidos correctos.


En C #, el símbolo @ combinado con comillas dobles le permite escribir cadenas escapadas. P.ej

print(@"c:/mydir/dont/have/to/escape/backslashes/etc");

Si no lo usa, debe usar el carácter de escape en sus cadenas.

http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx

No necesita especificarlo en ningún otro lugar en el código. De hecho, hacerlo debería causar un error de compilación.


La cadena devuelta desde su clase auxiliar no es una cadena literal, por lo que no necesita usar el carácter ''@'' para eliminar el comportamiento de las barras invertidas.


Lo tienes al revés. El @ -operator es para convertir literales en cadenas, manteniendo todos los caracteres funky. Tu camino ya es una cadena, no necesitas hacer nada en absoluto. Solo pierde el @.

string filePath = helper.getFilePath();


No creo que tengas que preocuparte si ya tienes el valor. El operador @ es para cuando se especifica la cadena (como en el primer fragmento de código).

¿Qué estás tratando de hacer con la cadena de ruta que no está funcionando?


No estoy seguro si lo entiendo En su ejemplo: si helper.getFilePath () devuelve "c: / somepath / file.txt", no habrá ningún problema, ya que el @ solo es necesario si especifica explícitamente una cadena con "". Cuando las Funciones "hablan entre sí", siempre obtendrás el camino literal. Si el XML contiene c: / somepath / file.txt y su función devuelve c: / somepath / file.txt, el string filePath también contendrá "c: / somepath / file.txt" como una ruta válida.