Médio C#
Métodos de string e StringBuilder
Enunciado
Leia uma frase do usuário. Exiba a frase sem espaços no início e no fim, em maiúsculas. Depois, use StringBuilder para inverter a frase caractere por caractere e exiba o resultado.
Requisitos
- Ler uma frase com
Console.ReadLine(). - Exibir a frase com
Trim()eToUpper(). - Inverter a frase usando
StringBuildere exibi-la.
Código inicial
using System;
using System.Text;
class Program
{
static void Main()
{
// Seu código aqui
}
}
Saída esperada
Frase formatada: HELLO WORLD
Frase invertida: DLROW OLLEH
Ver dica
Para inverter, percorra a string de trás para frente com um for e use sb.Append(frase[i]).
Mostrar solução
using System;
using System.Text;
class Program
{
static void Main()
{
Console.Write("Digite uma frase: ");
string frase = Console.ReadLine();
// Trim e ToUpper
string formatada = frase.Trim().ToUpper();
Console.WriteLine($"Frase formatada: {formatada}");
// Inverter com StringBuilder
var sb = new StringBuilder();
for (int i = frase.Length - 1; i >= 0; i--)
{
sb.Append(frase[i]);
}
Console.WriteLine($"Frase invertida: {sb.ToString()}");
}
}
Passo a passo
- Lemos a frase do usuário com
Console.ReadLine(). - Aplicamos
Trim()para remover espaços extras eToUpper()para converter para maiúsculas. - Exibimos a frase formatada usando interpolação.
- Criamos um
StringBuilderpara montar a string invertida. - Usamos um laço
forque começa do último índice (frase.Length - 1) e vai até 0. - A cada iteração, adicionamos o caractere atual ao
StringBuildercomAppend. - Convertemos o
StringBuilderpara string comToString()e exibimos.
Por que funciona
O StringBuilder é mais eficiente que concatenar strings dentro de um loop, pois evita criar uma nova string a cada iteração. A inversão percorre a string de trás para frente, aproveitando o indexador frase[i].
Erros comuns
- Esquecer de converter o
StringBuilderpara string:Console.WriteLine(sb)funciona, mas evite depender deToStringimplícito. - Usar
frase.Lengthcomo índice inicial: causaIndexOutOfRangeException. - Não tratar
nulldoReadLine: em C# moderno,ReadLineretornastring?, mas o exemplo assume entrada não nula.
Outra forma de resolver
char[] chars = frase.ToCharArray();
Array.Reverse(chars);
string invertida = new string(chars);
Essa abordagem é mais curta, mas não usa StringBuilder. Prefira StringBuilder quando precisar montar strings dinamicamente em partes.
Saída esperada
Frase formatada: HELLO WORLD
Frase invertida: DLROW OLLEH