Risposte:
Usa classi di personaggi: [ \t]
\t?
Come ha notato @ Eiríkr Útlendi, la soluzione accettata considera solo due spazi vuoti: la tabulazione orizzontale (U + 0009) e uno spazio di interruzione (U + 0020). Non considera altri caratteri di spazio bianco come gli spazi unificatori (che si trovano nel testo che sto cercando di trattare). Un elenco di caratteri di spazi bianchi più completo è incluso su Wikipedia e anche a cui si fa riferimento nella risposta Perl collegata . Una semplice soluzione C # che tiene conto di questi altri caratteri può essere creata usando la sottrazione della classe di caratteri
[\s-[\r\n]]
oppure, inclusa la soluzione di Eiríkr Útlendi, ottieni
[\s\u3000-[\r\n]]
Nota: per coloro che si occupano di testo CJK (cinese, giapponese e coreano), lo spazio a doppio byte (Unicode \u3000) non è incluso in \snessuna implementazione che ho provato finora (Perl, .NET, PCRE, Python). Dovrai prima normalizzare le tue stringhe (ad esempio sostituendo tutte \u3000con \u0020), oppure dovrai usare un set di caratteri che includa questo codepoint oltre a qualsiasi altro spazio bianco che stai prendendo di mira, come [ \t\u3000].
Se stai usando Perl o PCRE, hai la possibilità di usare l' \habbreviazione per lo spazio bianco orizzontale , che sembra includere lo spazio a byte singolo, lo spazio a doppio byte e la tabulazione, tra gli altri. Vedi il thread Match whitespace ma non newline (Perl) per maggiori dettagli.
Tuttavia, questa \hscorciatoia non è stata implementata per .NET e C #, come meglio sono stato in grado di dire.
\h(introdotto in Java 8) include \u3000, ma \snon lo include, a meno che non si imposti la modalità UNICODE_CHARACTER_CLASS (introdotto in Java 7).
Se vuoi sostituire lo spazio sotto il codice ha funzionato per me inC#
Regex.Replace(Line,"\\\s","");
Per Tab
Regex.Replace(Line,"\\\s\\\s","");
\hclasse di caratteri solo perl , ma mostra che ci sono molti altri caratteri di spazio bianco, nel caso in cui sia necessario aggiungerli all'elenco qui.