2012-09-12 18 views
6

Ich habe eine Funktion, die eine Datei mit Trennzeichen liest.string.Split Funktion in C# Tabulator-Trennzeichen

Das Trennzeichen wird an die Funktion per String-Argument übergeben. Das Problem ist, wenn ich die "\t" Trennzeichen übergeben, endet es wie 10 und daher kann Split diese Sequenz nicht finden.

Wie kann ich dieses Problem beheben?

private void ReadFromFile(string filename, string delimiter) 
{ 

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

     ....... 
} 
+3

bitte Code anzeigen! – Yahia

Antwort

21

Ich denke, Sie so etwas wie

string sep = @"\t"; 

in diesem Fall verwenden September \\t Doppelzurückhalten wird Slash

Verwendung string sep = "\t"

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

Verwendung einzelnes qutes für diesen wie Split ('\ t'), auf diese Weise erhalten Sie eine char und kein String werden übergeben.

-3

haben Sie versucht: Environment.NewLine?

+0

Ich denke, Sie haben diese Antwort hier versehentlich gepostet, anstatt auf eine andere Frage, denn sie scheint nichts mit der Frage zu tun zu haben. – shieldgenerator7

0

Wenn Sie in "\ t" passieren, wie das Trennzeichen wird nichts in "\ t" ändern. Etwas anderes ist doppelt so gut wie dein Tab.

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

Eine weitere Möglichkeit, Ihre Split ersetzt das TAB (\ t) durch ein Leerzeichen auf diese Weise zu tun:

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

für mich Dieser Code funktioniert.

1

übergeben Parameterwert als Dezimalzahl von \ t (Registerkarte) und konvertieren Sie es Char.

int delimeter =9; 

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

char _delimeter = Convert.ToChar(delimeter); 

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

Fröhliche Programmierung.

Verwandte Themen