2014-10-27 13 views
7

Voglio rimuovere le schede da una stringa. Sto usando questo codice ma non funziona.C# Rimuovi la scheda da una stringa, Identificazioni schede

string strWithTabs = "here is a string  with a tab"; 

// tab-character 
char tab = '\u0009'; 
String line = strWithTabs.Replace(tab.ToString(), ""); 

Ho provato a farlo, ma ancora la sua non funziona

String line = strWithTabs.Replace("\t", ""); 

Ha funzionato con String line = strWithTabs.Replace(" ", "");

Ma è il loro qualsiasi altro modo per identificare le schede?

Ho anche guardato questo post Removal of Tab-whitespace? Ma ha rimosso tutti gli spazi dalla stringa, dove voglio solo rimuovere Tab.

+3

Il tuo primo esempio avrebbe funzionato, tranne che non ci sono schede nella 'strWithTabs' ... – madd0

risposta

12

La scheda e lo spazio non sono uguali, se la scheda viene convertita in spazi, la sostituzione di "\ t" non funzionerà. Sotto il codice troverà la scheda e sostituirà con lo spazio singolo e troverà anche spazi multipli e lo sostituirà con spazio singolo.

string strWithTabs = "here is a string   with a tab and with  spaces"; 

string line = strWithTabs.Replace("\t", " "); 
while(line.IndexOf(" ") > 0) 
{ 
line = line.Replace(" ", " "); 
} 
14

Perché " " non è uguale a tab character. \t è. È un escape sequence character.

Ad esempio;

string strWithTabs = "here is a string\twith a tab"; 
char tab = '\u0009'; 
String line = strWithTabs.Replace(tab.ToString(), ""); 

line sarà here is a stringwith a tab

Non si può dire una frase come \t è pari a 6 spazi per esempio.

+1

@Downvoter cura di commento alla Almeno così posso vedere dove potrei sbagliarmi? –

+0

Questo ha funzionato per me, grazie Mister @ SonerGönül –

1

Usa espressioni regolari per ridurre più spazi a uno:

var strWithTabs = "here is a string  with a tab and  spaces"; 
const string reduceMultiSpace= @"[ ]{2,}"; 
var line= Regex.Replace(strWithTabs.Replace("\t"," "), reduceMultiSpace, " "); 
Problemi correlati