【发布时间】:2012-05-17 14:35:12
【问题描述】:
我正在开发一个程序,您可以从 csv 文件中选择一个标题(它最初会解析标题)并且我希望用户能够获取列的数据而无需读取整个文件。(制作一个字符串数组的列表,并为信息提取字符串数组索引,这是简单易行的事情)。
有没有办法我可以使用 seek 来做到这一点?也许搜索一个字符串(这将是标题)并在其列中获取信息。
这是 getHeader 函数,以防万一……
private string[] getHeader(string path)//gets the headers from the file path specified.
{
List<string> row = new List<string>();
using (StreamReader readFile = new StreamReader(path))
{
row = (readFile.ReadLine().Split(',').ToList());
}
return row.ToArray();
}
(to list 和 to array 只是为了绕过最初为数组设置大小...)
谢谢!
【问题讨论】:
-
不清楚你想达到什么目标......你能更好地解释一下你的目标是什么吗?
-
Split 无论如何都会返回一个数组,因此您可以安全地使用
return readFile.ReadLine().Split(',')。至于列的事情,除非你有固定宽度的列,我想你能做的最好的就是通读文件。 -
需要注意的一点是,如果数据包含逗号并且您必须使用引号分隔的文本,则调用 Split 将不起作用。在这种情况下,您实际上必须进行一些解析。
-
ToList、ToArray 调用是多余的,只需将 row 声明为
string[] row = null;int 与您现在使用 List 的位置相同。拆分不会填充现有数组。它会创建一个新的。
标签: c# csv filestream seek