2010-04-20 6 views
81

Pregunta rápida. ¿Hay un equivalente de @ como se aplica a las cadenas en Java:Java equivalente de las cadenas verbales de C# con @

Por ejemplo, puedo hacer @"c:\afolder\afile" en C# y hacer que ignore los caracteres de escape al procesar en lugar de tener que hacer "c:\\afolder\\aFile". ¿Hay un equivalente de Java?

hmmm: stackoverflow se está escapando de mí .. lol. El segundo ejemplo es la siguiente:

c: (doble barra invertida) ACarpeta (doble barra invertida) unArchivo

+2

Posible duplicado de: http://stackoverflow.com/questions/2018556/does-java-have-the-character-to-escape-string-quotes/2018583#2018583 – codaddict

+2

Se tomó la libertad de aclarar el título desde ' @ 'se puede usar también para usar palabras clave de lenguaje como identificadores. – Joey

+0

@unicornaddict - de hecho es la misma pregunta. Las disculpas no vieron eso al buscar. @ Johannes - buena jugada ... gracias –

Respuesta

63

No. Escapar/externalizar la cadena es su única opción.

+0

me encanta C# 6 con @ "string" y $ "string {i}" y muy futuros más que java –

13

Como Kent y Jon han dicho, no, no.

Estoy respondiendo solo para señalar que incluso si hubiera, para su caso particular, sería una mala idea en el caso general, asumiendo un programa más que excepcional.

Los programas de Java se ejecutan en más plataformas que solo Windows, y otras plataformas tienen diferentes delimitadores de archivos. Así que en lugar de tratar con barras invertidas escapado, la forma correcta de manejar su ejemplo particular es imprescindible adquirir la propiedad separador de archivo:


    String sep = System.getProperty("file.separator"); 
    String filename = ROOTDIR + sep + "folder" + sep + "afile"; 

Dónde habrías creado por separado ROOTDIR basado en alguna política - no sólo la plataforma, pero si desea que su "afile" sea relativo a la raíz del sistema de archivos real, o relativa al directorio de inicio del usuario.

Pero, definitivamente, el uso de la propiedad separador de archivos hace que sus programas sean más ampliamente utilizables. ¿Es más trabajo? Sí. Como dice Wanda Sykes, "pero vale la pena".

+1

Hiya y gracias. el hecho de que es un 'nombre de archivo' en mi caso en cierto modo irrelevante. Todo lo que mi código está haciendo es tomar una cadena (o intentar) y pasarla. En realidad, no hago nada más que pasarlo a un servicio web. Estaba probando la respuesta de un servicio C# WCF que se llama desde Java. Como solo estaba programando una prueba, fue en este punto que descubrí esta limitación. Yo no estoy haciendo nada 'basado en archivos' con la cadena. –