我使用以下代码来读取制表符分隔的流。
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(',');
?
感谢。
答案 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);