1. Comparando strings

Uma das operações mais comuns com strings é a comparação. A classe String tem mais de dez métodos diferentes que são usados ​​para comparar uma string com outra string. Abaixo, vamos dar uma olhada em sete dos principais.

Métodos Descrição
boolean equals(String str)
Strings são consideradas iguais se todos os seus caracteres forem correspondentes.
boolean equalsIgnoreCase(String str)
Compara strings, ignorando maiúsculas e minúsculas (ignora se são maiúsculas ou minúsculas)
int compareTo(String str)
Compara strings lexicograficamente. Retorna 0 se as strings forem iguais. O valor de retorno é menor que zero se a string atual for menor que o parâmetro string. O valor de retorno é maior do que se a string atual for maior do que o parâmetro string.
int compareToIgnoreCase(String str)
Compara strings lexicograficamente enquanto ignora maiúsculas e minúsculas. Retorna 0 se as strings forem iguais. O valor de retorno é negativo se a string atual for menor que o parâmetro string. O valor de retorno é maior do que se a string atual for maior do que o parâmetro string.
boolean regionMatches(int toffset, String str, int offset, int len)
Compara partes de strings
boolean startsWith(String prefix)
Verifica se a string atual começa com a stringprefix
boolean endsWith(String suffix)
Verifica se a string atual termina com a stringsuffix

Digamos que você queira escrever um programa que peça ao usuário um caminho para um arquivo e verifique o tipo de arquivo com base em sua extensão. O código de tal programa pode ser algo como isto:

Código Notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
Cria um Scannerobjeto
Lê uma linha do console

Verifica se a string pathtermina com a string dada


2. Procurando por substrings

Depois de comparar strings, a segunda operação mais popular é encontrar uma string dentro de outra. A classe String também possui alguns métodos para isso:

Métodos Descrição
int indexOf(String str)
Procura a string strna string atual. Retorna o índice do primeiro caractere da primeira ocorrência.
int indexOf(String str, int index)
Procura a string strna string atual, ignorando os primeiros indexcaracteres. Retorna o índice da ocorrência.
int lastIndexOf(String str)
Procura a string strna string atual, começando do final. Retorna o índice da primeira ocorrência.
int lastIndexOf(String str, int index)
Procura a string strna string atual a partir do final, ignorando os primeiros indexcaracteres.
boolean matches(String regex)
Verifica se a string atual corresponde a um padrão especificado por uma expressão regular.

Os métodos indexOf(String)e indexOf(String, index)são freqüentemente usados ​​em combinação. O primeiro método permite localizar a primeira ocorrência da substring passada na string atual. E o segundo método permite localizar a segunda, terceira etc. ocorrências ignorando os primeiros caracteres de índice.

Suponha que temos um URL como " https://domain.com/about/reviews " e queremos substituir o nome de domínio por " codegym.cc ". Os URLs podem ter todos os tipos de nomes de domínio diferentes, mas sabemos o seguinte:

  • O nome de domínio é precedido por duas barras — " //"
  • O nome de domínio é seguido por uma única barra — " /"

Veja como seria o código para tal programa:

Código Notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
Crie um objeto Scanner
Lê uma linha do console

Obtém o índice da primeira ocorrência da string " //"
Obtemos o índice da primeira ocorrência da string /, mas procuramos somente após uma ocorrência dos caracteres //.
Pegamos a string do começo ao fim dos caracteres //
Pegamos a string do /começo ao fim.

Concatenamos as strings e o novo domínio.

Os métodos lastIndexOf(String)e lastIndexOf(String, index)funcionam da mesma forma, apenas a busca é realizada do final da string para o início.



3. Criando substrings

Além de comparar strings e encontrar substrings, há outra ação muito popular: obter uma substring de uma string. Acontece que o exemplo anterior mostrou uma substring()chamada de método que retornou parte de uma string.

Aqui está uma lista de 8 métodos que retornam substrings da string atual:

Métodos Descrição
String substring(int beginIndex, int endIndex)
Retorna a substring especificada pelo intervalo de índice beginIndex..endIndex.
String repeat(int count)
Repete a string atual n vezes
String replace(char oldChar, char newChar)
Retorna uma nova string: substitui o caractere oldCharpelo caracterenewChar
String replaceFirst(String regex, String replacement)
Substitui a primeira substring, especificada por uma expressão regular, na string atual.
String replaceAll(String regex, String replacement)
Substitui todas as substrings na string atual que correspondem à expressão regular.
String toLowerCase()
Converte a string para letras minúsculas
String toUpperCase()
Converte a string para letras maiúsculas
String trim()
Remove todos os espaços no início e no final de uma string

Aqui está um resumo dos métodos disponíveis:

substring(int beginIndex, int endIndex)método

O substringmétodo retorna uma nova string que consiste nos caracteres da string atual, começando no caractere com índice beginIndexe terminando em endIndex. Como em todos os intervalos em Java, o caractere com índice endIndexnão é incluído no intervalo. Exemplos:

Código Resultado
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Se o endIndexparâmetro não for especificado (o que é possível), a substring será obtida do caractere em beginIndex até o final da string.

repeat(int n)método

O método repeat simplesmente repete os ntempos da string atual. Exemplo:

Código Resultado
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)método

O replace()método retorna uma nova string na qual todos os caracteres oldCharsão substituídos pelo caractere newChar. Isso não altera o comprimento da string. Exemplo:

Código Resultado
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()e replaceAll()métodos

O replaceAll()método substitui todas as ocorrências de uma substring por outra. O replaceFirst()método substitui a primeira ocorrência da substring passada pela substring especificada. A string a ser substituída é especificada por uma expressão regular. Vamos nos aprofundar nas expressões regulares na missão Java Multithreading .

Exemplos:

Código Resultado
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()métodos

Conhecemos esses métodos quando aprendemos a chamar os métodos da Stringclasse.

trim()método

O trim()método remove os espaços iniciais e finais de uma string. Não toca nos espaços que estão dentro de uma string (ou seja, não no início ou no final). Exemplos:

Código Resultado
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"