2012-09-12 12 views
6

Sınırlandırılmış bir dosyayı okutan bir işlev var.string.Split işlevi C# sekme sınırlayıcısı

Ayırıcı, dize argümanı ile işleve iletilir. Sorun, "\t" sınırlayıcısını geçtiğimde, "\\t" gibi biter ve bu nedenle, Split bu diziyi bulamıyor.

Bu sorunu nasıl çözebilirim? Split ile ('\ t'), bir char ve bir dize geçirerek olacak bu yolu gibi bunun için

private void ReadFromFile(string filename, string delimiter) 
{ 

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

     ....... 
} 
+3

lütfen bir kod gösterin! – Yahia

cevap

21

Ben Eylül çift geri çizgi \\t yapacak Bu durumda

string sep = @"\t"; 

gibi bir şey kullanıyor tahmin

kullanım string sep = "\t"

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

Denediniz mi: Environment.NewLine?

+0

Bu soruyu yanlışlıkla başka bir soru yerine buraya göndermiş olabileceğinizi düşünüyorum, çünkü sorulan soruyla ilgisi yok gibi görünüyor. – shieldgenerator7

0

siz "\ t" olarak geçmek durumunda sınırlayıcı hiçbir şey "\ t" olarak değiştirmez. Başka bir şey sekmesinden kaçıyor.

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

sizin bölünmüş Bu şekilde boş bir alana göre TAB (\ t) yerini alıyor yapmanın bir başka yolu:

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

Bu kod benim için çalışıyor.

1

Parametre değerini \ t (sekme) ondalık sayısı olarak geçirin ve ona dönüştürün.

int delimeter =9; 

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

char _delimeter = Convert.ToChar(delimeter); 

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

Mutlu Programlama.