c#tab分隔符中的string.Split函数

时间:2012-09-12 09:18:46

标签: c# string split

我有一个读取分隔文件的函数。

分隔符通过字符串参数传递给函数。问题是,当我通过"\t"分隔符时,它最终会像"\\t"一样,因此,Split无法找到此序列。

如何解决此问题?

private void ReadFromFile(string filename, string delimiter)
{

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

        .......
 }

6 个答案:

答案 0 :(得分:22)

我猜你正在使用像

这样的东西
string sep = @"\t";

在这种情况下,sep将保留\\t双反斜杠

使用string sep = "\t"

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

答案 1 :(得分:1)

使用单引号就像Split('\ t')一样,这样你就会传递一个char而不是一个字符串。

答案 2 :(得分:1)

将参数值作为\ t(tab)的十进制数传递并转换为Char。

 int delimeter =9;

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

 char _delimeter = Convert.ToChar(delimeter);

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

快乐编程。

答案 3 :(得分: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);
    }

答案 4 :(得分:0)

另一种进行拆分的方法是用这种方式用空格替换TAB(\ t):

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

此代码适用于我。

答案 5 :(得分:-3)

你试过了吗:Environment.NewLine?