Um trecho de palestra com um mentor como parte do curso Codegym University. Inscreva-se no curso completo.


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 8 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, retorna o número de caracteres correspondentes desde o início da string.
public int compareToIgnoreCase(String str)
Retorna o número de caracteres correspondentes desde o início de uma string, ignora maiúsculas e minúsculas
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

Um trecho de palestra com um mentor como parte do curso Codegym University. Inscreva-se no curso completo.


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.
public 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"