Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Substituindo espaços em branco

Para esse caso, eu considerei não usar nenhum método além dos métodos de expressões regulares. Por isso, criei três expressões:

  • uma para limpar ocorrências de múltiplos espaços na string, transformando-os em apenas um;
  • outra para remover os espaços do início;
  • outra para remover os espaços do fim.

Porém, nesse caso, se o objetivo fosse apenas resolver o problema, eu usaria o método Trim() após a expressão regular inicial.

using System.Text.RegularExpressions;

Console.Clear();
string textoComEspacos = "    TESTE   MUITOS    ESPACOS                 ";
var regexEspacos = @"\s{2,}";

var regexEspacosInicio = @"^\s";
var regexEspacosFim = @"\s$";

string textoSemEspacos = Regex.Replace(textoComEspacos, regexEspacos, " ");
textoSemEspacos = Regex.Replace(textoSemEspacos, regexEspacosInicio, "");
textoSemEspacos = Regex.Replace(textoSemEspacos, regexEspacosFim, "");

Console.WriteLine($"Texto sem espaços:\"{textoSemEspacos}\"");
1 resposta
solução!

Oi, Diego! Como vai?

Gostei muito da forma como você organizou o raciocínio em três etapas distintas: uma expressão para limpar os múltiplos espaços, outra para remover os espaços do início e outra para remover os espaços do fim da string. Usar apenas recursos de Regex para resolver o problema mostra uma preocupação legítima em explorar o potencial dessas expressões ao máximo.

Sua observação sobre o método Trim() também foi muito pertinente. Em casos práticos, combinar o Regex.Replace inicial com o Trim() ao final é uma abordagem mais direta e fácil de ler.

Uma dica interessante para o futuro é unir as expressões de início e fim em uma única linha, usando o operador de alternância do Regex. Veja o exemplo abaixo:


using System.Text.RegularExpressions;

string textoComespacos = "   TESTE   MUITOS    ESPACOS   ";

string textoSemEspacos = Regex.Replace(textoComespacos, @"\s{2,}", " ");
textoSemEspacos = Regex.Replace(textoSemEspacos, @"^\s+|\s+$", "");

Console.WriteLine($"Texto sem espaços: \"{textoSemEspacos}\"");

Nesse exemplo, a expressão ^\s+|\s+$ substitui as variáveis regexEspacosInicio e regexEspacosFim por uma única chamada ao método Replace, tornando o código mais conciso sem perder a clareza.

Vale lembrar que o quantificador + garante que um ou mais espaços sejam removidos, o que é mais robusto do que \s sozinho, caso existam múltiplos espaços nas bordas da string.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Você já pensou em explorar outras situações em que expressões regulares poderiam simplificar ainda mais o tratamento de strings no seu projeto?