0

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

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(' ');or row = line.Split(',');

谢谢。

4

4 回答 4

1

您无法事先区分它们。

可以做的是尝试拆分所有这些:

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

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

于 2013-04-09T09:00:50.647 回答
1

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

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

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

var result = Regex.Split(line, @"[,\t ]+")
于 2013-04-09T09:01:23.480 回答
0

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

于 2013-04-09T09:01:26.783 回答
0
row = line.Split(new char[]{' ', ',', '\t'}, StringSplitOptions.RemoveEmptyEntries);
于 2013-04-09T09:01:50.737 回答