Métodos de busca em strings em C#

No desenvolvimento de software, a manipulação de strings é uma tarefa comum e essencial. Em C#, a linguagem oferece uma série de métodos para realizar buscas em strings de maneira eficiente e intuitiva. Entre os métodos utilizados estão “StartsWith”, “EndsWith”, “Contains”, “IndexOf” e ”LastIndexOf”. Neste artigo, exploraremos esses métodos, fornecendo exemplos de situações do dia a dia.

StartsWith

O método StartsWith” é utilizado para verificar se uma string começa com um determinado prefixo, retornando um valor booleano: “true”, se encontrar uma correspondência e “false”, caso contrário. Este método é muito útil em diversas situações, como validação de entrada de dados ou filtragem de listas.

Imagine um sistema de cadastro de usuários onde os números de telefone devem começar com o código do país. Podemos utilizar “StartsWith” para validar essa entrada:

				
					string telefone = "+5511999999999";
if (telefone.StartsWith("+55"))
{
    Console.WriteLine("Número de telefone brasileiro.");
}
else
{
    Console.WriteLine("Número de telefone de outro país.");
}

				
			

Se o telefone do usuário começa com “+55”, que é o DDI (Discagem Direta Internacional) do Brasil, informamos que o número de telefone é brasileiro. Caso contrário, informamos que é um telefone de outro país.

Por padrão, o método “StartsWith” verifica a string considerando a caixa das letras. Se a string a ser comparada contiver letras maiúsculas e o parâmetro de verificação não, o resultado será falso:

				
					string exemplo = "NextWaveEducation";
bool resultado = exemplo.StartsWith("nextwave");
Console.WriteLine(resultado); // False

				
			

Para realizar uma comparação insensível à caixa das letras, é possível utilizar a sobrecarga do método “StartsWith” que aceita um parâmetro “StringComparison”. Utilize “StringComparison.OrdinalIgnoreCase” para ignorar as diferenças entre maiúsculas e minúsculas:

				
					string exemplo = "NextWaveEducation";
bool resultado = exemplo.StartsWith("nextwave", StringComparison.OrdinalIgnoreCase);
Console.WriteLine(resultado); // True

				
			

EndsWith

O método “EndsWith” verifica se uma string termina com um determinado sufixo. Este método pode ser aplicado em várias situações, como verificar extensões de arquivos ou validar formatos específicos.

Considere um aplicativo que só aceita uploads de imagens com extensões “jpg” e “png”. Podemos utilizar “EndsWith” para verificar se o arquivo é uma imagem válida:

				
					string imagem = "fotoUsuario.jpg";
if (imagem.EndsWith(".jpg") || imagem.EndsWith(".png"))
{
    //Salvar a imagem do usuário.
}
else
{
    Console.WriteLine("Formato de arquivo inválido.");
}

				
			

Se o nome do arquivo de imagem terminar com “.jpg” ou “.png”, ele será salvo. Caso contrário, será retornada uma mensagem informando que o formato da imagem é inválido.

Contains

O método “Contains”  verifica se uma determinada string contém outra substring específica dentro dela. É como se você estivesse procurando por uma palavra ou conjunto de caracteres dentro de um texto maior.

Imagine um sistema de busca que precisa verificar se uma descrição de produto contém certas palavras-chave para classificação. Podemos utilizar o “Contains” para realizar essa verificação:

				
					string descricaoProduto = "Este é um smartphone de última geração com câmera de alta resolução.";
if (descricaoProduto.Contains("smartphone"))
{
    Console.WriteLine("O produto é um smartphone.");
}
else
{
    Console.WriteLine("O produto não é um smartphone.");
}

				
			

IndexOf

O método “IndexOf” busca a primeira ocorrência de um caractere ou substring dentro de uma string, retornando o índice da posição encontrada. Esse método é útil para diversas tarefas, como localizar a posição de uma determinada palavra em um texto ou validar a presença de caracteres específicos.

Imagine que você deseja encontrar a posição que uma palavra aparece em um texto:

				
					string texto = "Estudando sobre strings na Next Wave Education";
string palavraChave = "Next";
int indice = texto.IndexOf(palavraChave);
Console.WriteLine($"A palavra '{palavraChave}' aparece na posição {indice} do texto");

				
			

O método “IndexOf” é utilizado na string “texto” para buscar a palavra-chave “Next”. Quando encontrada, ele armazena a posição inicial dessa palavra na variável “indice”. No exemplo fornecido, o resultado impresso será: “A palavra ‘strings’ aparece na posição 16 do texto”.

LastIndexOf

O método “LastIndexOf” funciona de maneira semelhante ao “IndexOf”, mas busca a última ocorrência de um caractere ou substring na string. Esse método é útil quando você precisa localizar a posição final de um caractere ou palavra repetida em um texto.

Suponha que você queira extrair o nome de um arquivo dentro de uma string que contém o caminho completo do arquivo:

				
					string caminhoCompleto = "C:\\Users\\Usuario\\Documents\\projeto\\relatorio_final.pdf";
int indiceUltimaBarra = caminhoCompleto.LastIndexOf('\\');
string nomeArquivoComExtensao = caminhoCompleto.Substring(indiceUltimaBarra + 1);
Console.WriteLine(nomeArquivoComExtensao);

				
			

O método “LastIndexOf” localiza a posição do último separador de diretório (\), armazenando essa posição na variável “indiceUltimaBarra”. Utilizando o método “Substring”, o código extrai a parte do texto que começa logo após o último separador de diretório, resultando no nome do arquivo com sua extensão.

Acelere a sua carreira conosco!

Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET StartClique aqui

Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET ExpertClique aqui

Conclusão

Os métodos de busca em strings são ferramentas poderosas no arsenal de um desenvolvedor C#. Eles permitem a realização de verificações, validações de forma simples e eficiente. Desde validações de entrada de dados até filtragens e buscas dentro de textos, esses métodos são aplicáveis em uma ampla variedade de cenários do dia a dia. Entender e saber utilizar esses métodos adequadamente pode aumentar significativamente a eficiência e a robustez de suas aplicações.