Processamento de strings com o Apache Commons Lang 3

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.