Respostas:
Use classes de personagens: [ \t]
\t?
Como @ Eiríkr Útlendi observou, a solução aceita considera apenas dois caracteres de espaço em branco: a tabulação horizontal (U + 0009) e um espaço de quebra (U + 0020). Ele não considera outros caracteres de espaço em branco, como espaços sem quebra (que por acaso estão no texto com o qual estou tentando lidar). Uma lista de caracteres de espaço em branco mais completa está incluída na Wikipedia e também referenciada na resposta Perl vinculada . Uma solução C # simples que leva em conta esses outros caracteres pode ser construída usando a subtração de classe de caractere
[\s-[\r\n]]
ou, incluindo a solução de Eiríkr Útlendi, você obtém
[\s\u3000-[\r\n]]
Observação: para aqueles que lidam com texto CJK (chinês, japonês e coreano), o espaço de byte duplo (Unicode \u3000) não está incluído em \snenhuma implementação que tentei até agora (Perl, .NET, PCRE, Python). Você precisará normalizar suas strings primeiro (por exemplo, substituindo todos \u3000por \u0020) ou terá que usar um conjunto de caracteres que inclua este ponto de código além de qualquer outro espaço em branco que você esteja almejando, como [ \t\u3000].
Se estiver usando Perl ou PCRE, você tem a opção de usar a \habreviação para espaços em branco horizontais , que parecem incluir o espaço de byte único, espaço de byte duplo e tabulação, entre outros. Veja o tópico Match whitespace but not newlines (Perl) para mais detalhes.
No entanto, esse \hatalho não foi implementado para .NET e C #, pelo que pude ver.
\h(introduzido no Java 8) inclui \u3000, mas não inclui \s, a menos que você defina o modo UNICODE_CHARACTER_CLASS (introduzido no Java 7).
Se você deseja substituir o espaço abaixo do código funcionou para mim emC#
Regex.Replace(Line,"\\\s","");
Para guia
Regex.Replace(Line,"\\\s\\\s","");
\hclasse de caractere somente perl , mas mostra que existem muitos outros caracteres de espaço em branco, caso você precise adicioná-los à lista aqui.