2012-09-12 17 views
6

Ho una funzione che legge un file delimitato.string.Straccia funzione nel delimitatore di schede C#

Il delimitatore viene passato alla funzione tramite argomento stringa. Il problema è che quando passo il delimitatore "\t", finisce come "\\t" e, quindi, Split non riesce a trovare questa sequenza.

Come posso risolvere questo problema? qutes singoli

private void ReadFromFile(string filename, string delimiter) 
{ 

     StreamReader sr = new StreamReader(filename, Encoding.Default); 
     string[] firstLine = sr.ReadLine().Split(t.ToCharArray()); 

     ....... 
} 
+3

si prega di mostrare un po 'di codice! – Yahia

risposta

21

Credo che si utilizza qualcosa come

string sep = @"\t"; 

in questo caso settembre terrà \\t doppia barra rovesciata

uso string sep = "\t"

string content = "Hello\tWorld"; 
string sep = "\t"; 
string[] splitContent = content.Split(sep.ToCharArray()); 
1

uso di questo come Split ('\ t'), in questo modo si passerà un char e non una stringa.

-3

hai provato: Environment.NewLine?

+0

Penso che potresti aver postato per sbaglio questa risposta qui invece che su un'altra domanda, perché non sembra avere nulla a che fare con la domanda che viene posta. – shieldgenerator7

0

Se si passa in "\ t", come il delimitatore non lo cambierà in "\ t". Qualcos'altro è il doppio sfuggire alla tua scheda.

Blah("\t"); 
    private static void Blah(string s) 
    { 
     var chars = s.ToCharArray(); 
     Debug.Assert(chars.Length == 1); 

     var parts = "blah\tblah\thello".Split(chars);    
     Debug.Assert(parts.Length == 3); 
    } 
0

Un altro modo per fare la tua divisa sta sostituendo il TAB (\ t) da uno spazio vuoto in questo modo:

  if(linea.ToLower().Contains(@"\t")) 
       linea = linea.Replace(@"\t", " "); 
      retVal = linea.Trim().Split(' ')[1]; 

Questo codice funziona per me.

1

passare il valore del parametro come numero decimale di \ t (scheda) e convertirlo Char.

int delimeter =9; 

// 9 ==> \t 
// 10 ==> \n 
// 13 ==> \r 

char _delimeter = Convert.ToChar(delimeter); 

string[] rowData = fileContent.Split(_delimeter); 

Buona programmazione.

Problemi correlati