Processamento de strings com o Apache Commons Lang 3
1. Visão geral
A bibliotecaApache Commons Lang 3 fornece suporte para manipulação de classes principais das APIs Java. Esse suporte inclui métodos para lidar com seqüências de caracteres, números, datas, simultaneidade, reflexão de objetos e muito mais.
Além de fornecer uma introdução geral à biblioteca, este tutorial demonstra métodos da classeStringUtils que é usada para manipulação de instânciasString.
2. Dependência do Maven
Para usar a biblioteca Commons Lang 3, basta retirá-la do repositório central do Maven usando a seguinte dependência:
org.apache.commons
commons-lang3
3.5
Você pode encontrar a versão mais recente desta bibliotecahere.
3. StringUtils
A classeStringUtils fornece métodos para operaçõesnull-safe em strings.
Muitos métodos desta classe têm os correspondentes definidos na classejava.lang.String, que não sãonull-safe. No entanto, esta seção, em vez disso, enfocará vários métodos que não possuem equivalentes na classeString.
4. O MétodocontainsAny
O métodocontainsAny verifica se um determinadoString contém qualquer caractere no conjunto de caracteres fornecido. Este conjunto de caracteres pode ser passado na forma de varargsString ouchar.
O fragmento de código a seguir demonstra o uso de dois tipos de sobrecarga desse método com a verificação de resultados:
String string = "example.com";
boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c');
boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z');
boolean contained3 = StringUtils.containsAny(string, "abc");
boolean contained4 = StringUtils.containsAny(string, "xyz");
assertTrue(contained1);
assertFalse(contained2);
assertTrue(contained3);
assertFalse(contained4);
5. O MétodocontainsIgnoreCase
O métodocontainsIgnoreCase verifica se um determinadoString contém outroString de uma maneira que não diferencia maiúsculas de minúsculas.
O fragmento de código a seguir verifica seString “example.com” compreende“example” quando maiúsculas e minúsculas são ignoradas:
String string = "example.com";
boolean contained = StringUtils.containsIgnoreCase(string, "example");
assertTrue(contained);
6. O MétodocountMatches
O métodocounterMatches conta quantas vezes um caractere ou substring aparece em um determinadoString.
A seguir está uma demonstração desse método, confirmando que‘w' aparece quatro vezes e“com” duas vezes emString“welcome to www.example.com”:
String string = "welcome to www.example.com";
int charNum = StringUtils.countMatches(string, 'w');
int stringNum = StringUtils.countMatches(string, "com");
assertEquals(4, charNum);
assertEquals(2, stringNum);
7. Método de Anexação e Anexação
Os métodosappendIfMissingeappendIfMissingIgnoreCase anexam um sufixo ao final de um determinadoString se ele ainda não terminar com qualquer um dos sufixos passados de forma sensível a maiúsculas e minúsculas, respectivamente.
Da mesma forma, os métodosprependIfMissingeprependIfMissingIgnoreCase acrescentam um prefixo ao início de um determinadoString se ele não começar com nenhum dos prefixos passados.
No exemplo a seguir, os métodosappendIfMissingeprependIfMissing são usados para adicionar um sufixo e um prefixo aoString “example.com” sem que esses afixos sejam repetidos:
String string = "example.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");
assertEquals("example.com", stringWithSuffix);
assertEquals("www.example.com", stringWithPrefix);
8. Método de mudança de caixa
A classeString já define métodos para converter todos os caracteres deString em maiúsculas ou minúsculas. Esta subseção apenas ilustra o uso de métodos que alteram o caso de aString de outras maneiras, incluindoswapCase,capitalizeeuncapitalize.
O métodoswapCase troca o caso de umString, mudando de maiúsculas para minúsculas e minúsculas para maiúsculas:
String originalString = "example.COM";
String swappedString = StringUtils.swapCase(originalString);
assertEquals("example.com", swappedString);
O métodocapitalize converte o primeiro caractere de um determinadoString em maiúsculas, deixando todos os caracteres restantes inalterados:
String originalString = "example";
String capitalizedString = StringUtils.capitalize(originalString);
assertEquals("example", capitalizedString);
O métodouncapitalize converte o primeiro caractere deString fornecido em minúsculas, deixando todos os caracteres restantes inalterados:
String originalString = "example";
String uncapitalizedString = StringUtils.uncapitalize(originalString);
assertEquals("example", uncapitalizedString);
9. Método de reversão
A classeStringUtils define dois métodos para reverter strings:reverseereverseDelimited. O métodoreverse reorganiza todos os caracteres deString na ordem oposta, enquanto o métodoreverseDelimited reordena grupos de caracteres, separados por um delimitador especificado.
O fragmento de código a seguir inverte a string“example”e valida o resultado:
String originalString = "example";
String reversedString = StringUtils.reverse(originalString);
assertEquals("gnudleab", reversedString);
Com o métodoreverseDelimited, os caracteres são invertidos em grupos em vez de individualmente:
String originalString = "www.example.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');
assertEquals("com.example.www", reversedString);
10. O Métodorotate()
O métodorotate() desloca circularmente os caracteres de aString várias posições. O fragmento de código abaixo move todos os caracteres das quatro posiçõesString “example” para a direita e verifica o resultado:
String originalString = "example";
String rotatedString = StringUtils.rotate(originalString, 4);
assertEquals("dungbael", rotatedString);
11. O Métododifference
O métododifference compara duas strings, retornando o restante do segundoString, começando da posição em que é diferente do primeiro. O seguinte fragmento de código compara doisStrings: “example Tutorials” e“example Courses” em ambas as direções e valida o resultado:
String tutorials = "example Tutorials";
String courses = "example Courses";
String diff1 = StringUtils.difference(tutorials, courses);
String diff2 = StringUtils.difference(courses, tutorials);
assertEquals("Courses", diff1);
assertEquals("Tutorials", diff2);
12. Conclusão
Este tutorial apresenta o processamento de String no Apache Commons Lang 3 e aborda as principais APIs que podemos usar da classe de bibliotecaStringUtils.
Como sempre, a implementação de todos os exemplos e trechos de código fornecidos acima pode ser encontrada emthe GitHub project.