C# 从CSV文件读取并存储到阵列
你能帮我拿C#吗。 我试图在C#中创建一个函数,用于打开CSV文件并将其保存到数组中:C# 从CSV文件读取并存储到阵列,c#,C#,你能帮我拿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 {
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
}
您能帮我一下吗?您可以使用string.Split(',')扩展名方法
using (StreamReader streamReader = new StreamReader(File.OpenRead(guid.ToString())))
{
for (int i = 0; i <= 200; ++i)
{
string[] str = streamReader.ReadLine().Split(',');
}
}
使用(StreamReader StreamReader=newstreamreader(File.OpenRead(guid.ToString()))
{
对于(inti=0;i
string[] lines = File.ReadAllLines(path);
if(lines.Length >= 200){
for(int i = 0; i < 200; i++){
string[] str = lines[i].Split(',');
//do something here
}
}
string[]line=File.ReadAllLines(路径);
如果(lines.Length>=200){
对于(int i=0;i<200;i++){
字符串[]str=行[i]。拆分(',');
//在这里做点什么
}
}
类似这样的内容:
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(','));
}
}
使用(StreamReader r=newstreamreader(guid.ToString()))
{
弦线;
国际线路公司;
ArrayList结果=新建ArrayList();
而((line=r.ReadLine())!=null&&lineScont++手动解析CSV实际上相当棘手。您最好重用TextFieldParser
(添加对Microsoft.VisualBasic
程序集的引用)
使用Microsoft.VisualBasic.FileIO;
....
字符串[,]parsedCsv;
List csvLines=新列表();
TextFieldParser parser=newtextfieldparser(新文件流(guid.ToString(),FileMode.Open));
paraser.Delimiters=新字符串[]{“,”};
parser.TextFieldType=FieldType.Delimited;
int maxLines=200,lineCount=0;
尝试
{
而(!parser.EndOfData&&lineCount++
我在这里假设输出将是一个二维字符串数组-您可能需要根据您所追求的内容调整此代码,特别是如果您必须处理每行字段数不相同的情况(可能不太可能,但仍然如此)
TextFieldParser
真正有用的地方是它可以处理不同类型的delimeters;
,例如,这段代码可以解析制表符分隔的文本。您可以通过从VisualBasis.Net程序集中“借用”一个很好的实现来作弊:如果您自己做的话,请小心,csv文件中有一些特殊字符。既然LINQ对.Split()做得这么好,为什么还要麻烦呢扩展名?@JesseCarter尝试用.Split()解析“a,b,c,\'x,y,z\”“
”你会明白我的意思。这很公平,但我们没有理由相信他的文件是这样设置的。我所见过的大多数CSV文件每行都有一个CSV条目,可以很容易地使用字符串进行解析。分隔符上的拆分这是非常正确的,但对格式进行这些假设是有风险的,尤其是鉴于CSV格式比大多数人想象的要复杂。例如,任何依赖于ReadLine
的内容都是脆弱的,因为引用的CSV字段可能包含换行符。
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];
}
}