2012-09-12 52 views
6

我有一個讀取分隔文件的函數。string.Split函數在C#標籤分隔符

分隔符通過字符串參數傳遞給函數。問題是,當我通過"\t"分隔符時,它會像"\\t"一樣結束,因此Split無法找到此序列。

我該如何解決這個問題?

private void ReadFromFile(string filename, string delimiter) 
{ 

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

     ....... 
} 
+3

請顯示一些代碼! – Yahia

回答

21

我猜你是在這種情況下使用類似

string sep = @"\t"; 

月將舉行\\t雙反斜線

使用string sep = "\t"

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

對於像Split('\ t')這樣的單個qutes,你將傳遞一個char而不是一個字符串。

-3

你試過了嗎:Environment.NewLine?

+0

我想你可能會意外地在這裏發佈這個答案而不是另一個問題,因爲它似乎與被問到的問題沒有任何關係。 – shieldgenerator7

0

如果在 「\ t」 的爲合格分隔符不會將其更改爲「\ t」。別的東西是雙重逃脫你的標籤。

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

另一種方式做你的分裂是由一個空格替換TAB(\ t)將在這條路上:

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

此代碼對我的作品。

1

將參數值傳遞爲\ t(製表符)的十進制數並轉換爲Char。

int delimeter =9; 

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

char _delimeter = Convert.ToChar(delimeter); 

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

快樂編程。

相關問題