No dudes en divulgar nuestra página y códigos con tus amigos, necesitamos tu ayuda para aumentar nuestra comunidad.
Solución:
No hay una buena alternativa a usar "
para incluir comillas dobles en su string literal.
Hay malas alternativas:
- Usar
u0022
, el escape Unicode para un carácter de comillas dobles. El compilador trata un escape Unicode como si ese carácter estuviera escrito. Se trata como un carácter de comillas dobles en el código fuente, terminando / comenzando unString
literal, por lo que esto NO funciona. - Concatenar el personaje
'"'
, p.ej"This is a " + '"' + "string"
. Esto funcionará, pero parece ser aún más feo y menos legible que simplemente usar"
. - Concatenar el
char
34 para representar el carácter de comillas dobles, p. Ej."This is a " + (char) 34 + "string"
. Esto funcionará, pero es incluso menos obvio que esté intentando colocar un carácter de comillas dobles en su string. - Copie y pegue las “comillas tipográficas” de Word, p. Ej.
"This is a “string” with “quotes” in it!"
. Estos no son los mismos caracteres (Unicode U + 201C y U + 201D); tienen diferentes apariencias, pero funcionarán.
Supongo que para ocultar la “repugnancia”, podrías esconderla detrás de una constante.
public static final String DOUBLE_QUOTE = """;
Entonces podrías usar:
String expr = " This is a " + DOUBLE_QUOTE + "string" + DOUBLE_QUOTE + ...;
Es más legible que otras opciones, pero todavía no es muy legible y sigue siendo feo.
No hay """
mecanismo en Java, así que usando el escape "
, es la mejor opción. Es el más legible y el menos feo.
Desde Java 13 función de vista previa
REF: https://openjdk.java.net/jeps/355
No funciona precisamente a la manera de Scala. Las comillas triples de apertura deber irá seguida de una nueva línea.
var expr = """
This is a 1-line "string" with "quotes" and no leading spaces in it! """;
La posición de las comillas triples de cierre es importante. Define el tamaño de la sangría. Por ejemplo, para tener sangría de 2 espacios, coloca su cierre """
como sigue:
String sql = """
SELECT emp_id, last_name
FROM postgres.employee
WHERE city = 'INDIANAPOLIS'
ORDER BY emp_id, last_name;
""";
esto resultaría en 4 líneas de texto:
SELECT emp_id, last_name
FROM postgres.employee
WHERE city = 'INDIANAPOLIS'
ORDER BY emp_id, last_name;
Escapar:
El escape de triples citas es intuitivo:
String txt = """
A text block with three quotes """ inside.""";
NOTA: Esta función es una vista previa, por lo que no puede usarla en Java 13, a menos que configure el --enable-preview TextBlock
key.
ACTUALIZAR: La función pasó a la segunda vista previa (JEP 368) con Java 14.
Estará esperando Java 15.
Encontré esta pregunta mientras hacía lo mismo: componer cadenas JSON literales pequeñas para pruebas rápidas. Una alternativa que no surgió es usar comillas simples dobles y reemplazarlas con comillas dobles, algo como:
String json = " ''label'' : ''set range'', ''min'' : 0, ''max'' : 100".replace("''", """)
Obviamente, esto no funciona si hay una comilla simple doble regular, pero las posibilidades de eso deberían ser escasas. No es una gran solución, pero se ve mejor que muchas barras invertidas, en mi opinión. Como paso intermedio para poner el json en un archivo separado, esto probablemente no sea tan malo.
Recuerda algo, que tienes la capacidad de añadir un diagnóstico verdadero si te fue útil.