CodeGym /Cursos /C# SELF /Métodos avançados da classe string

Métodos avançados da classe string

C# SELF
Nível 9 , Lição 4
Disponível

1. Procurando uma substring em uma string

Na aula passada, você aprendeu a pegar uma substring de uma string. Agora vamos aprender a encontrar uma string dentro de outra. Pra isso, tem 5 métodos top:

Método Contains: a string contém a substring?

Retorna true se a string passada está contida naquela onde você chamou o método.

string frase = "Vento da mudança";
bool temPalavra = frase.Contains("mudança"); // true
Checando se tem substring usando Contains

A busca diferencia maiúsculas de minúsculas! "vento".Contains("V")false.

Método IndexOf: achar a posição da substring

Bem parecido com o IndexOf em arrays: procura a substring na string (do começo pro fim) e retorna o índice da primeira ocorrência.

string texto = "melanciamelancia";
int indice = texto.IndexOf("ancia"); // 2
Procurando a posição da substring com IndexOf
  • Se não encontrar nada, retorna -1.
  • Tem alternativa com posição inicial: IndexOf("ancia", 4). Igualzinho array.

Método LastIndexOf: última ocorrência

Também parecido com LastIndexOf em arrays: procura a substring na string (do fim pro começo) e retorna o índice da primeira ocorrência a partir do final.

string repetida = "tarefa tarefa";
int ultima = repetida.LastIndexOf("tarefa"); // 7
Procurando a última ocorrência da substring com LastIndexOf

String começa/termina com uma substring específica

Muitas vezes você precisa checar se sua string começa (ou termina) com uma substring específica. Pra isso tem dois métodos:

  • StartsWith — checa se a string começa com uma substring;
  • EndsWith — checa se a string termina com a substring.
string nomeArquivo = "foto.jpg";
bool ehJpg = nomeArquivo.EndsWith(".jpg"); // true

string email = "suporte@empresa.com";
bool ehSuporte = email.StartsWith("suporte"); // true
Checando início e fim da string

Se quiser comparar sem diferenciar maiúsculas/minúsculas, passa um parâmetro extra dizendo o modo de comparação (olha a doc do StringComparison.OrdinalIgnoreCase).

2. Método Replace: trocando caracteres e substrings

O método Replace troca todas as ocorrências da string A pela string B. Surgiu pra ajudar com erros de digitação, censura e trocar variáveis em templates! (Brincadeira.)

string endereco = "Londres, rua Baker-street";
string atualizado = endereco.Replace("Londres", "Paris");
Console.WriteLine(atualizado); // "Paris, rua Baker-street"
Trocando substring usando Replace
  • Dá pra trocar até caracteres: str.Replace('a', 'z')
  • Importante: todas as trocas acontecem na string toda, não só na primeira ocorrência.

3. Método Split: cortando a string em pedaços

O método Split faz o seguinte: pega sua string e corta em partes, usando separadores — caracteres ou strings que vão ser usados pra dividir. O método retorna um array de strings, com os pedaços da string original.

string[] partes = originalString.Split(separator);
Sintaxe do método Split
  • separator — caractere ou array de caracteres que vão ser usados como separador.

Exemplo mais simples

Vamos dividir a string pelo espaço:

string entrada = "maçã pera laranja banana";
string[] frutas = entrada.Split(' '); 	// vira array ["maçã","pera","laranja","banana"]
Console.WriteLine(frutas[0]); 			// "maçã"
Console.WriteLine(frutas[1]); 			// "pera"

Aqui a gente pegou um array de tamanho 4, cada palavra é um elemento separado.

Vários separadores

Às vezes a string pode ter mais de um tipo de separador. Por exemplo, o usuário pode digitar valores separados por espaço, vírgula ou ponto e vírgula.

Nesses casos, dá pra usar um array de caracteres separadores:

string entrada = "maçã, pera; laranja banana";
char[] separadores = { ' ', ',', ';' };
string[] frutas = entrada.Split(separadores, StringSplitOptions.RemoveEmptyEntries);

Bônus: o parâmetro opcional StringSplitOptions.RemoveEmptyEntries tira pedaços vazios. Isso é útil se o usuário digitou vários separadores seguidos — tipo dois espaços ou algo como "maçã,, pera".

Separando por substring

Separadores podem ser strings também, não só caracteres. Por exemplo, se você tem um arquivo CSV com separador ";" ou |:

// Separando por um caractere
string dados = "Ivanov;Petrov;Sidorov";
string[] nomes = dados.Split(';'); // pelo caractere ';'

// Ou, se o separador for uma string:
string log = "2024-01-01::Erro::Não foi possível executar tarefa";
string[] separadores = { "::" };
string[] partes = log.Split(separadores);

4. Método Join: juntando o array de strings de volta

O método Join faz o contrário: recebe um array de strings e junta tudo numa string só, colocando entre os elementos o separador que você escolher.

string resultado = string.Join(separator, arrayOfStrings);
Sintaxe do método Join
  • separator — string que vai ser colocada entre os elementos.
  • arrayOfStrings — array ou coleção de strings (string[], List<string> etc).

Exemplo básico

Vamos criar uma string só a partir de um array, separando por vírgula:

string[] itens = { "maçã", "pera", "laranja", "banana" };
string junto = string.Join(", ", itens);
Console.WriteLine(junto); // "maçã, pera, laranja, banana"
Juntando array de strings com Join

Juntando com separador vazio — colando tudo junto

Às vezes você só quer juntar as strings, sem colocar nada entre elas:

string[] partes = { "Eu", "amo", "C#" };
string mensagem = string.Join("", partes);
Console.WriteLine(mensagem); // "EuamoC#"
Juntando strings sem separador

5. Erros comuns

Muito iniciante esquece de tirar espaços extras depois de dividir a string com Split. Por exemplo, se o usuário digitou "maçã, pera ,banana", depois do Split vão ter elementos tipo " pera ". Se você converter pra número ou comparar, vai dar bug. Usa Trim() depois do Split em cada elemento — é um bom hábito.

Outro ponto — strings vazias. Se o usuário digitou dois separadores seguidos ou começou/terminou a string com separador, o Split pode retornar elementos vazios. Usa StringSplitOptions.RemoveEmptyEntries pra não ter dor de cabeça depois.

Se o array pro Join tiver elementos vazios ou null, o Join simplesmente ignora eles. Mas se você não quiser isso (tipo, se no relatório precisa mostrar que alguns valores foram pulados), vai ter que tratar o array antes.

E mais uma: Split nunca muda a string original, ele retorna um novo array. Join também não muda o array original, só devolve uma nova string. Lembra: strings e arrays em C# são imutáveis (não mudam).

2
Tarefa
C# SELF, nível 9, lição 4
Bloqueado
Substituição de substring em um texto usando o método `Replace`
Substituição de substring em um texto usando o método `Replace`
2
Tarefa
C# SELF, nível 9, lição 4
Bloqueado
Dividindo uma string em partes e juntando elas de novo
Dividindo uma string em partes e juntando elas de novo
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION