2012-09-12 53 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); 

快乐编程。

相关问题