你能帮我解决一下C#。 我正在尝试在C#中创建一个函数,它打开一个CSV文件并将它们保存到一个数组中:
FileStream fileStream = new FileStream(guid.ToString(), FileMode.Open);
for (int i = 1; i > 200; i++) // it checks the first 200 lines
{
int j = 0;
string[] str = new string[j];
do
{
// saving each character to the variable until comma is found
} while(str == '\n'); // read each character in a for loop until new line character found
}
你能帮帮我吗?
答案 0 :(得分:3)
这样的事情:
using (StreamReader r = new StreamReader(guid.ToString()))
{
string line;
int linesCount;
ArrayList result = new ArrayList();
while ((line = r.ReadLine()) != null && linesCount++ <= 200)
{
result.AddRange(line.Split(','));
}
}
答案 1 :(得分:3)
手动解析CSV实际上非常棘手。您可能最好重用TextFieldParser
(添加对Microsoft.VisualBasic
程序集的引用)。
using Microsoft.VisualBasic.FileIO;
....
string[,] parsedCsv;
List<string[]> csvLines = new List<string[]>();
TextFieldParser parser = new TextFieldParser(new FileStream(guid.ToString(), FileMode.Open));
parser.Delimiters = new string[] { "," };
parser.TextFieldType = FieldType.Delimited;
int maxLines = 200, lineCount = 0;
try
{
while (!parser.EndOfData && lineCount++ < maxLines)
{
csvLines.Add(parser.ReadFields());
}
}
catch (MalformedLineException)
{
Console.WriteLine("Line Number: {0} Value: {1}", parser.ErrorLineNumber, parser.ErrorLine);
return;
}
parsedCsv = new string[csvLines.Count, csvLines[0].Length];
for (int i = 0; i < csvLines.Count; i++)
{
for (int j = 0; j < csvLines[i].Length; j++)
{
parsedCsv[i, j] = csvLines[i][j];
}
}
我在这里假设输出将是一个2-D字符串数组 - 你可能需要根据你所追求的内容调整这段代码,特别是如果你必须应对每条线都没有的情况具有相同数量的字段(可能不太可能,但仍然)。
关于TextFieldParser
真正有用的是它将处理不同类型的分隔符。例如,通过设置parser.Delimiters = new string[] { "\t" };
,相同的代码可以解析制表符分隔的文本。
答案 2 :(得分:1)
怎么样:
string[] lines = File.ReadAllLines(path);
if(lines.Length >= 200){
for(int i = 0; i < 200; i++){
string[] str = lines[i].Split(',');
//do something here
}
}
答案 3 :(得分:0)
您可以使用string.Split(',')扩展方法。
using (StreamReader streamReader = new StreamReader(File.OpenRead(guid.ToString())))
{
for (int i = 0; i <= 200; ++i)
{
string[] str = streamReader.ReadLine().Split(',');
}
}
Split扩展方法将返回由逗号分隔的各个值的字符串数组。