区分制表符分隔,空格分隔和逗号分隔的流

时间:2013-04-09 08:58:26

标签: c# streamreader

我使用以下代码来读取制表符分隔的流。

using (StreamReader readFile = new StreamReader(path))
{
    string line;
    string[] row;
    while ((line = readFile.ReadLine()) != null)
    {
        row = line.Split('\t');
        parsedData.Add(row);
    }
}

但是,有时用户可能会提供以空格分隔或以逗号分隔的文件。如何自动检测分隔符,而不必将row = line.Split('\t');更改为row = line.Split(' ');row = line.Split(',');

感谢。

4 个答案:

答案 0 :(得分:1)

你无法预先区分它们。

row = line.Split('\t', ' ', ',');

这当然假设分隔符之间的数据不包含分隔符。

答案 1 :(得分:1)

您可以使用string.Split方法按字符数分割数据

var delims = new [] {',', '\t', ' ' };  
var result = line.Split(delims, StringSplitOptions.RemoveEmptyEntries);

或者您可以使用正则表达式

var result = Regex.Split(line, @"[,\t ]+")

答案 2 :(得分:0)

您必须定义分隔符是什么以及如何检测它。如果你说:“文件的分隔符是我在第一行遇到的第一个非引用的空白字符”,那么你可以读取第一行并确定分隔符。然后,您可以将其传递给.Split()方法。

答案 3 :(得分:0)

row = line.Split(new char[]{' ', ',', '\t'}, StringSplitOptions.RemoveEmptyEntries);