Saltar al contenido

Comillas triples en Java como Scala

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 un String 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *