iberck
1/16/2017 - 8:12 PM

Groovy Strings

Groovy Strings

GString

Se representa con comillas dobles: SOPORTA SUSTITUCIONES Ej.: "Cadenas con comillas dobles"

Si se utilizan comillas dobles, no se necesita escapar las comillas simples.:

def doubleQuote = "Double quote string let's go"

Resultado: Double quote string let's go

Java string

Se representa con comillas simples: NO SOPORTA SUSTITUCIONES Ej.: 'Cadena simple'

Si se utilizan comillas simples no se necesita escapar las comillas dobles:

def singleQuote = 'Single quote string to "demo".'

Resultado: Single quote string to "demo".

Multilínea

Ideal para escribir texto con varias líneas

  • No hay necesidad de escapar comillas simples y dobles
  • Soporta múltiples líneas agregando al final de cada una un retorno de línea.

La multilínea GString soporta sustituciones:

def nombre="carlos"

"""
bienvenido: '"${nombre}"'
segunda línea
"""

Resultado:

bienvenido: '"carlos"'
segunda línea

La multilínea Java string no soporta sustituciones:

def nombre="carlos"

''' 
bienvenido: '"${nombre}"'
segunda línea
'''

Resultado:

bienvenido: '"carlos"'
segunda línea

Slashy Strings

Son ideales para las regexp porque no hay necesidad de escapar \ (backslash)

  • Soporta sustituciones
  • No hay necesidad de escapar comillas simples y dobles
  • Conserva el \ dentro del texto
  • Soporta multilínea
  • No es bueno para cadenas html porque los cierres de los tags </p> los interpreta como el cierre de la cadena.
def color = 'azul'
def interpolatedSlashy = /un carro \ "'${color}'" y otro
verde./

Resultado: un carro \ "'azul'" y otro verde.

Dollar slashy

No hay necesidad de escapar $ ni / (forward slash) dentro de la cadena.

Es útil para expresiones regulares que no pueden ser representadas con /slashy strings/ porque contienen el símbolo /.

Escapar caracteres especiales

GString, JavaString, Slashy String, Dollar String, Strings simples y multilinea: Todos tienen que escapar caracteres especiales, la diferencia entre ellos es que por defecto escapan algunos caracteres para evitar la necesidad de escaparlos.

Ej.:

def str = "un caracter especial \$ escapado con backslash"

Resultado: un caracter especial $ escapado con backslash

Backslash al final de cada línea

Se puede utilizar backslash al final de cada línea para organizar una cadena.

Ejemplo multilinea con Backslash (no inserta retornos de línea en la cadena como lo hace multilínea):

def str = 'This is\
a sample with\
backslash'
assert "This isa sample withbackslash" == str