Supongamos que tiene un literal String con muchas comillas en su interior. Podrías escapar de todos ellos, pero es un fastidio y difícil de leer.
En algunos idiomas, puedes hacer esto:
foo = '"Hello, World"';
En Java, sin embargo, ''
se usa para char
s, por lo que no puede usarlo para String
s de esta manera. Algunos lenguajes tienen sintaxis para solucionar este problema. Por ejemplo, en Python, puede hacer esto:
"""A pretty "convenient" string"""
¿Java tiene algo similar?
System.out.println(mapperObj.writeValueAsString(mapperObj.readValue(str, Object.class)));
Respuestas:
La respuesta es no, y la prueba reside en la Especificación del lenguaje Java :
Como puede ver, un
StringLiteral
solo puede estar limitado"
y no puede contener un carácter especial sin escapes.Una nota al margen: puedes incrustar Groovy dentro de tu proyecto, esto extenderá la sintaxis de Java permitiéndote usar
'''multi line string '''
,' "string with single quotes" '
y también"string with ${variable}"
.fuente
No, y siempre me ha molestado la falta de diferentes sintaxis de cadena literal en Java.
Aquí hay un truco que he usado de vez en cuando:
Principalmente solo hago algo así para un campo estático. Dado que es estático, el código de reemplazo de cadena se llama una vez, al inicializar la clase. Por tanto, la penalización del rendimiento en tiempo de ejecución es prácticamente inexistente y hace que el código sea considerablemente más legible.
fuente
Actualización de diciembre de 2018 (12 meses después):
Los literales de cadena sin formato (que están en la lista ámbar ) no llegarán al JDK 12.
Vea las críticas aquí .
Puede haber una versión futura de Java (10 o más).
Consulte JEPS 8196004 de enero de 2018: ( "JEP" es el "Programa de mejora de JDK" )
Entonces en lugar de:
Podrías escribir:
¡Ordenado!
Pero sigue siendo solo un borrador : deberá publicarse, enviarse, ser candidato y financiarse antes de completarse y convertirse en el próximo JDK.
fuente
Respuesta simple: No.
Para cadenas más largas que deben escaparse, generalmente las leo de algún recurso externo.
fuente
también puede usar StringEscapeUtils de apache commons
ACTUALIZACIÓN : Si alguien está interesado en algunos ejemplos, aquí hay un enlace útil: https://dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils
fuente
String
s, por lo que no hay forma de tener un valor bien formateado en su código. Es de suponer que podrías usar estos métodos para leer de un archivo a un archivoString
, pero no creo que esa sea la pregunta aquí.Lo siguiente parece funcionar para mí:
Creo que debido a que char es el tipo de variable primitiva para String, Strings y chars se pueden combinar (al menos el compilador de eclipse no parece quejarse).
fuente
Si desea escapar
'
o"
en su cadena, puede usar el siguiente código:fuente