A classe String no Java é uma das ferramentas mais fundamentais para desenvolvedores. Ela oferece um conjunto robusto de métodos para manipular sequências de caracteres de forma eficiente. Abaixo, expolramos as operações mais comuns e como utilizá-las na prática.
Localização de Substrings
Para encontrar a posição de um caractere ou sequência dentro de uma String, utilizamos os métodos indexOf e lastIndexOf.
- indexOf(String s): Retorna o índice da primeira ocorrência do argumento informado. Se não encontrar, retorna -1.
- lastIndexOf(String s): Retorna o índice da última ocorrência do argumento.
String frase = "Java é uma linguagem poderosa";
int primeiraPosicao = frase.indexOf("a"); // Retorna 1
int ultimaPosicao = frase.lastIndexOf("a"); // Retorna 28
Acesso a Caracteres Individuais
O método charAt(int index) permite recuperar um caractere específico com base em sua posição (índice), lembrando que o índice em Java inicia em 0.
String tech = "Microserviços";
char letra = tech.charAt(5); // Retorna 's'
Extração de Fragmentos (Substrings)
O método substring é utilizado para criar uma nova String a partir de uma parte da String original.
- substring(int beginIndex): Corta a string do índice inicial até o fim.
- substring(int beginIndex, int endIndex): Extrai o conteúdo entre os índices especificados (o caractere no
endIndexnão é incluído).
String sistema = "Desenvolvimento";
String parte1 = sistema.substring(7); // "vimento"
String parte2 = sistema.substring(0, 5); // "Desen"
Remoção de Espaços em Branco
O método trim() elimina espaços vazios no início e no fim da String, sendo muito útil para tratar entradas de usuários.
String entrada = " texto com espaços ";
String limpa = entrada.trim(); // "texto com espaços"
Substituição de Conteúdo
Com o método replace(), é possível trocar todas as ocorrências de um caractere ou sequência por outra. O método diferencia maiúsculas de minúsculas.
String base = "erro_no_log_erro";
String corrigida = base.replace("erro", "sucesso"); // "sucesso_no_log_sucesso"
Verificação de Início e Fim
Os métodos startsWith() e endsWith() retornam um valor booleano indicando se a String começa ou termina com um determinado prefixo ou sufixo.
String arquivo = "documento.pdf";
boolean ePdf = arquivo.endsWith(".pdf"); // true
boolean comecaDoc = arquivo.startsWith("doc"); // true
Comparação de Strings
Em Java, Strings não devem ser comparadas com o operador == para verificar conteúdo, mas sim com métodos específicos:
- equals(Object obj): Compara o conteúdo considerando maiúsculas e minúsculas.
- equalsIgnoreCase(String anotherString): Compara o conteúdo ignorando a diferença entre maiúsculas e minúsculas.
String senhaA = "Admin123";
String senhaB = "admin123";
boolean iguais = senhaA.equals(senhaB); // false
boolean iguaisIgnorandoCase = senhaA.equalsIgnoreCase(senhaB); // true
Comparação Lexicográfica
O método compareTo(String anotherString) compara duas Strings com base no valor Unicode de seus caracteres. Retorna 0 se forem iguais, um número negativo se a String for anterior à outra no dicionário, ou um número positivo caso contrário.
String a = "Apple";
String b = "Banana";
int resultado = a.compareTo(b); // Retorna um valor negativo
Conversão de Caixa (Maiúsculas e Minúsculas)
Para padronizar Strings, utilizamos toLowerCase() para converter tudo para minúsculo e toUpperCase() para maiúsculo.
String nome = "João Silva";
String min = nome.toLowerCase(); // "joão silva"
String mai = nome.toUpperCase(); // "JOÃO SILVA"
Divisão de Strings (Split)
O método split() divide a String em um array de Strings com base em um delimitador ou expressão regular.
String listaTags = "java,spring,docker,aws";
String[] tags = listaTags.split(","); // Retorna array ["java", "spring", "docker", "aws"]
// Limitando o número de divisões
String[] partesLimitadas = listaTags.split(",", 2); // Retorna ["java", "spring,docker,aws"]