Antes de começar só aviso que os comentários explicando ficaram bem longos, porém foi para deixar tudo bem entendível. É melhor um livro grande legível, a uma cartilha que só Scooby-Doo e amigos conseguem desvendar kkkkk bons estudos pessoal!
using bytebank_ATENDIMENTO.bytebank.Atendimento;
using System.Text.RegularExpressions;
Console.WriteLine("Boas Vindas ao ByteBank, Atendimento.");
void PesquisaTeste()
{
Console.WriteLine("\nTítulo para busca de nomes muito irado Wow\n");
//Afim de polpar as nossas queridas teclas do teclado, vou declarar os nomes aqui já.
string[] nomes =
{
"Nicolas",
"João",
"Felipe",
"Daniel Portugal", //#vv volta vida
"Guilherme Lima", //duplinha do barulho
};
Console.Write("Digite um nome: ");
string nome = Console.ReadLine()!; //Afins de exemplos, vamos imaginar que o input original tenha sido "DaNiEl pOrTUgAl "
//Vamos lá, aqui ocorrem várias formatações para assegurar que o nome digitado irá ser corretamente (nunca desacredite na habilidade do usuário em quebrar algo). Irei explicar cada uma.
nome = Regex.Replace(nome, @"\s+", " "); //Calma, não é um demônio de sete cabeças, o que este codigo faz é quase o mesmo que o string.Replace comum. A grande jogada do Regex.Replace é que você pode usar o shorthand "/s" (basicamente um código para simbolizar o espaço), junto do "+", que extende até o máximo de espaços sequenciais, assim você pode substituir x espaços por um único. "DaNiEl pOrTUgAl " -> "DaNiEl pOrTUgAl "
nome = nome.Trim(); //Remove os espaços (caso exista) antes e depois do nome. "DaNiEl pOrTUgAl " -> "DaNiEl pOrTUgAl"
//Aqui ocorrem mais duas verificações para ter certeza que a busca irá acontecer corretamente, sendo uma acompanhada de uma condição (ou talvez podemos chamar de descondição haha). Enfim, irei falar sobre elas também.
//"!string.IsNullOrWhiteSpace(nome)" -- Faz literalmente o que o nome dela diz. Notem que há um símbolo de exclamação antes da verificação, que basicamente inverte ela. Ou seja, se a função original dela era retornar 'true' caso a string "nome" fosse vazia, agora ela retorna 'false'. Isso evita que o programa crashe verificando um input inválido, como null ou "".
//"nomes.Contains(nome, StringComparer.CurrentCultureIgnoreCase)" -- Aqui temos a tal da verificação acompanhada de uma condição. A função .Contains() você já deve conhecer nesse nível do campeonato, mas talvez não conheça "StringComparer.CurrentCultureIgnoreCase". O que isto faz é basicamente avisar a função .Contains(), que pouco importa se o input tem letras maiúsculas ou minúsculas, será tudo a mesma coisa. "DaNiEl pOrTUgAl" == "Daniel Portugal".
if (!string.IsNullOrWhiteSpace(nome) && nomes.Contains(nome, StringComparer.CurrentCultureIgnoreCase))
{
//Console.WriteLine($"\no nome {nome} consta em nossa base de dados!");
//Caso queira exibir o nome igual do banco de dados, e assim exibir "Daniel Portugal" no lugar de "DaNiEl pOrTUgAl":
//Obs: O "n" neste caso desta função lambda, simboliza cada string do array"
Console.WriteLine($"\no nome {nomes.FirstOrDefault(n => String.Equals(n, nome, StringComparison.CurrentCultureIgnoreCase))} consta em nossa base de dados!");
}
else
{
Console.WriteLine($"\no nome {nome} não consta em nossa base de dados!");
}
}
PesquisaTeste();