Tempo de leitura: menos de 1 minuto
Continuando o primeiro post sobre conceitos básico de Groovy, vamos hoje ver com o Groovy é poderoso para trabalhar com String. No Groovy é possível instanciar um objeto java.lang.String ou um groovy.lang.GString.
Mas qual a diferença? String é a mesma usada no Java, já a GString, também chamada de string interpolada, traz além dos recursos da String padrão, vários outros. O GString é o padrão para sequencia de caracteres no Groovy.
As formas mais conhecidas de trabalhar com String no Groovy são:
1) Aspas simples:
[code language=”groovy”]
def str = ‘Texto qualquer’
[/code]
Diferente do Java, quando usamos aspas simples do Groovy, estamos pedindo uma instancia de java.lang.String.
2) Aspas simples triplas:
[code language=”groovy”]
def str = ”’Texto qualquer.
Linha 1
Linha 2”’
[/code]
Esse formato é usado para criar String multi-linhas, como se estivesse usado \n em cada uma das linha.
3) Aspas duplas:
[code language=”groovy”]
def str = "Texto qualquer"
[/code]
Quando usamos aspas duplas, a instância será um GString. A grande vantagem de usar GString é a interpolação, ou seja, é possível adicionar variáveis dentro da String, dispensando a necessidade de concatenação.
No Java:
[code language=”java”]
float valor = 100.00;
System.out.println("O valor é " + valor + " reais");
[/code]
No Groovy:
[code language=”groovy”]def valor = 100.00
println "O valor é $valor reais"
println "O valor é ${valor} reais"[/code]
Existe duas formas de interpolação de valores dinâmicos no GString:
- $ – usado para variáveis simples.
- ${} – usado quando o valor é resultado de uma operação, retorno de um método por exemplo.
4) Aspas duplas triplas:
[code language=”groovy”]
def str ="""Texto qualquer.
Linha 1
Linha 2"""
[/code]
Funcionamento parecido com as aspas simples triplas, com a diferença de contar com a interpolação.
Importante: Ao comparar igualdade entre uma String e GString que possuem o mesmo valor, ou seja, a mesma sequência de caracteres, o resultado será falso. Isso porque o hashCode deles são diferentes, já que String é imutável. Veja um exemplo:
[code language=”groovy”]
println "one: ${1}".hashCode() +" != "+ "one: 1".hashCode()
//Saída: -1012478518 != -1012478555
[/code]
Observação: Para comparar valor de String com GString, use o operador “==”, nunca o equals:
[code language=”groovy”]
println "teste${1}" //saída: teste1
println ‘teste’+1 //saída: teste1
println "teste${1}".equals(‘teste’+1) //saída: false
println "teste${1}" == ‘teste’+1 //saída: true
[/code]
Métodos úteis por padrão
Quando usamos Java puro, a class String disponibiliza poucos métodos para tratamento, muitas vezes dependemos de outras bibliotecas de utilitários para facilitar o tratamento de String. Uso muito o Apache Commons para esse fim, essa lib não pode faltar em um projeto Java, ajuda muito. A classe org.apache.commons.lang.StringUtils disponibiliza muitas facilidades.
No entanto, quando usamos a String ou GString no Groovy, é disponibilizado vários desse métodos utilitários de graça. Abaixo destaco alguns métodos legais:
- capitalize e uncapitalize: Faz com que a primeira letra de uma String fique em maiúscula ou em minúsculo:
[code language=”groovy”]
assert ‘h’.capitalize() == ‘H’
assert ‘hello world’.capitalize() == ‘Hello world’
assert ‘string’ == String.class.simpleName.uncapitalize()
[/code] - drop e dropWhile: corta uma String de frente para trás.
[code language=”groovy”]
def text = "Groovy"
assert text.drop( 0 ) == ‘Groovy’
assert text.drop( 2 ) == ‘oovy’
assert text.dropWhile{ it != ‘v’ } == ‘vy’
[/code] - find: localiza uma outra String dada uma regex.
[code language=”groovy”]
assert "10292" == "New York, NY 10292-0098".find(~/\d{5}/)
assert null == "New York, NY".find(~/\d{5}/)
[/code] - isLong, isFloat, isBoolean, etc…: retorna true quando a String for o tipo testado.
- plus e minus: concatena duas String ou remove uma String da outra.
[code language=”groovy”]
assert "Eder" == "Ed" + "er"
assert "Ed" == "Eder" – "er"
[/code] - tr: tradutor, funciona com um replace.
[code language=”groovy”]
assert ‘hello’.tr(‘aeiou’, ‘AEIOU’) == ‘hEllO’
assert ‘hello’.tr(‘z-a’, ‘Z-A’) == ‘HELLO’
[/code]
E por aí vai… clique aqui conhecer todos o métodos disponíveis.
Observação: não é só com a String que o Groovy adiciona métodos utilitários, praticamente com todos as Classes Java isso ocorre.
Dica: sempre que trabalhar com o Groovy, e precisar criar um método utilitário, procure se o Groovy já disponibiliza algo para isso na própria classe.
Se gostaram do post, curtam ou comentem aqui em baixo.
Abraços pessoal, até a próxima.

Link permanente