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}\"");